繁体   English   中英

按下按钮后每3秒更新一次JTextFields文本

[英]Update JTextFields text every 3 seconds after pressing button

所以我想要做的是,当我按下按钮时,JTextField文本开始每3秒更新一次新值。 我已经尝试过Thread sleep metod,但它会冻结整个程序的睡眠时间,并且在文本域结束后获取最新的输入。 所以这里有更好的解释我想要做的例子。

我按下JButton,只要有可用值,它就会每隔3秒将数字放在JTextFiel中。 我不希望它附加新文本,只需用new替换旧文本。 任何人都有想法我怎么能这样做? 提前致谢。

您应该使用javax.swing.Timer

final Timer updater = new Timer(3000, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // update JTextField
    }
});
JButton button = new JButton("Click me!");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        updater.start();
    }
});

Timer不会阻止Event Dispatch Thread(就像Thread.sleep那样),所以它不会导致程序无响应。

你不能在美国东部时间睡觉。 你可以使用swingworker(更好的解决方案)或做这样的事情:

//sleep in new thread
new Thread (new Runnable() {
    public void run() {
        Thread.sleep(3000);
         //update UI in EDT
         SwingUtilities.invokelater(new Runnable()  {
              public void run() {updateYourTextHere();}
          });
    }
}).start();

你需要在一个单独的线程上完成“工作”。 请参阅此处的一些答案: Java GUI不会更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM