0

我想把我的秒表放到 JPanel 中的 JTextPane 上,但它没有出现:/ 我不知道我是否可以将类中的对象放入(extends JLabel)类中 (extends JPanel)。或许,这就是原因。

我的秒表课:

    public class StopWatch extends JLabel implements ActionListener {

    private DecimalFormat df = new DecimalFormat("0.0");
    private Timer timer = new javax.swing.Timer(100, this);
    private long now = System.currentTimeMillis();

    public StopWatch() {
        this.setText(when());
    }

    public void actionPerformed(ActionEvent ae) {
        setText(when());
    }

    public void start() {
        timer.start();
    }

    public void stop() {
        timer.stop();
    }

    private String when() {
        return df.format((System.currentTimeMillis() - now) / 1000d);
    }  
}

这就是我使用它的方式:

    public class Tlo extends JPanel {  
        ....       
        StopWatch stopwatch = new StopWatch();
        JTextPane time = new JTextPane();
        time.setFont(new Font("Arial", Font.PLAIN, 28));  
        time.setBounds(135,598,115,34);
        time.setBackground(new Color(182, 221, 232));
        time.setEditable(false);
        time.add(stopwatch);
        add(time);
        stopwatch.start(); 
        ...     
    }

我该如何解决?

4

1 回答 1

0

问题是,虽然JTextPaneContainer类继承,但add方法不会将组件添加到JTextComponent's 文档。只会呈现这些文档组件。

代替:

time.add(stopwatch);

time.insertComponent(stopwatch);
于 2013-01-19T16:10:30.427 回答