我想從以下最小工作示例中單擊它後在一個小的時間間隔內更改其單選按鈕的文本兩次。即當我點擊按鈕時,我想立即將它的文本改變爲「1」,並且在3秒後將其文本再次改變爲「2」。如何強制java swing gui更新此片段
public class Example extends javax.swing.JFrame {
public Example() {
jRadioButton1 = new javax.swing.JRadioButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jRadioButton1.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jRadioButton1ItemStateChanged(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup().addGap(137, 137, 137)
.addComponent(jRadioButton1).addContainerGap(242, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup().addGap(126, 126, 126)
.addComponent(jRadioButton1).addContainerGap(153, Short.MAX_VALUE))
);
pack();
}
private void jRadioButton1ItemStateChanged(java.awt.event.ItemEvent evt) {
jRadioButton1.setText("1");
//repaint();
try { Thread.sleep(3000); }
catch (InterruptedException e) {}
jRadioButton1.setText("2");
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Example().setVisible(true);
}
});
}
private javax.swing.JRadioButton jRadioButton1;
}
以上顯然不起作用。我知道我應該使用repaint()或SwingUtilities.invokeLater()或者可能以某種方式創建一個新線程,但是我還沒有用它們的任何組合來實現所需的結果。
我該怎麼辦?
在此先感謝。
使用擺動[定時器](http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html)。 'Thread.sleep()'阻塞事件分派線程。 – kiheru
聘請Odesk或自由職業的一些高效人員,他們知道他們會爲你做:) – subash
我想你應該讀這個,也是:http://www.java-samples.com/showtutorial.php?tutorialid=291 – specializt