首页 文章

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

提问于
浏览
1

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

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

3 回答

  • 0

    你应该使用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 不会阻止事件调度线程(如 Thread.sleep ),因此不会导致程序无响应 .

  • 2

    你不能在美国东部时间睡觉 . 你可以使用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();
    
  • 1

    你需要在一个单独的线程上完成'the work' . 在这里看到一些答案:Java GUI Not changing

相关问题