簡體   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