单击按钮更新jLabel

时间:2016-02-10 15:37:31

标签: java swing jlabel

 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {  
    jLabel6.setText("Please wait");
    Cursor hourglassCursor = new Cursor(Cursor.WAIT_CURSOR);
    setCursor(hourglassCursor);
    //Program code
    Cursor normalCursor = new Cursor(Cursor.DEFAULT_CURSOR);
    setCursor(normalCursor);
    jLabel6.setText("");
 }

我在actionPerformed方法下有这个。我对jLabel进行了几次更新。单击按钮时屏幕上不显示第一个jLabel文本更新(“请稍候”)。完成所有过程后,jLabel将设置为空字符串。

2 个答案:

答案 0 :(得分:2)

我应该提一下,使用单独的线程可能会更容易,但如果您对使用异步调用感兴趣,则以下内容应该有效

app/templates/LoginPagePartial.html

使用jcabi-aspects异步注释

private void jButton4ActionPerformed(ActionEvent event) { jLabel6.setText("Please wait"); setCursor(new Cursor(Cursor.WAIT_CURSOR)); doStuff(); } 定义如下
doStuff()

这样做会使@Async private void doStuff() { //do whatever logic you need to here jLabel6.setText(""); setCursor(new Cursor(Cursor.DEFAULT_CURSOR); } 方法异步,并且我们将逻辑更改标签和光标返回方法本身的原因是该方法将在主线程的新线程中运行。

我希望这有帮助!

答案 1 :(得分:0)

Thread updateThread = new Thread() {
public void run() {
    Cursor hourglassCursor = new Cursor(Cursor.WAIT_CURSOR);
    setCursor(hourglassCursor);
    //Program code
    Cursor normalCursor = new Cursor(Cursor.DEFAULT_CURSOR);
    setCursor(normalCursor);
    }
};
updateThread.start();

我已经将它包含在一个单独的线程中,然后使用以下代码来使用SwingUtilities的invokeLater()

public void updateProgress(String updateString) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            jLabel6.setText(updateString);
        }
    });
}

我按照我的要求调用了updateProgress()方法。

希望这可以帮助有同样问题的人。