单击按钮更新 jLabel
Update jLabel on button click
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
文本更新 ("Please wait") 未显示在屏幕上。所有过程完成后 jLabel
设置为空字符串。
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() 方法。
希望这对遇到同样问题的人有所帮助。
我应该提一下,使用单独的线程可能会更容易,但如果您对使用异步调用感兴趣,则以下内容应该有效
private void jButton4ActionPerformed(ActionEvent event) {
jLabel6.setText("Please wait");
setCursor(new Cursor(Cursor.WAIT_CURSOR));
doStuff();
}
其中doStuff()
使用jcabi-aspects异步注解定义如下
@Async
private void doStuff() {
//do whatever logic you need to here
jLabel6.setText("");
setCursor(new Cursor(Cursor.DEFAULT_CURSOR);
}
这样做是使 doStuff()
方法异步,我们将更改标签和光标的逻辑放回方法本身的原因是该方法将 运行 在新线程中独立于主线程。
希望对您有所帮助!
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
文本更新 ("Please wait") 未显示在屏幕上。所有过程完成后 jLabel
设置为空字符串。
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() 方法。
希望这对遇到同样问题的人有所帮助。
我应该提一下,使用单独的线程可能会更容易,但如果您对使用异步调用感兴趣,则以下内容应该有效
private void jButton4ActionPerformed(ActionEvent event) {
jLabel6.setText("Please wait");
setCursor(new Cursor(Cursor.WAIT_CURSOR));
doStuff();
}
其中doStuff()
使用jcabi-aspects异步注解定义如下
@Async
private void doStuff() {
//do whatever logic you need to here
jLabel6.setText("");
setCursor(new Cursor(Cursor.DEFAULT_CURSOR);
}
这样做是使 doStuff()
方法异步,我们将更改标签和光标的逻辑放回方法本身的原因是该方法将 运行 在新线程中独立于主线程。
希望对您有所帮助!