在JTextPane中显示秒表

时间:2013-01-05 02:12:24

标签: java swing jpanel jtextpane stopwatch

我想把我的秒表放到JPanel中的JTextPane,但它没有出现:/我不知道我是否可以在课程(extends JLabel)中放置(extends JPanel)课程中的objetct。也许,这就是原因。

我的秒表课程:

    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(); 
        ...     
    }

我该如何解决?

1 个答案:

答案 0 :(得分:0)

问题是,虽然JTextPane继承自Container类,但add方法不会将组件添加到JTextComponent的文档中。只会呈现这些文档组件。

替换:

time.add(stopwatch);

time.insertComponent(stopwatch);