0
當我在我的程序中執行以下方法時,一些組件會在定時器耗盡時發生變化。例如,我創建了一個jTextArea,但沒有任何包含構造的事件來改變其大小。如果我首先展開jTextArea然後啓動計時器,則無關緊要,反之亦然。Java定時器未知事件
//Show Debug Information for given Seconds with given Text
void giveUserInformation(String input, boolean function, int duration) {
//Debug information and label visibility handling
jLabelDebug.setVisible(true);
jLabelDebug.setText(input);
//Image
if (function)
jLabelDebug.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/ok-icon.png")));
else
jLabelDebug.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/Actions-edit-delete-icon.png")));
//Show duration
if (timerShowDurationRuns) {
timerShowDuration.cancel();
timerShowDuration = new Timer();
}
timerShowDurationRuns = true;
//fadeIn();
timerShowDuration.schedule(new TimerTask() {
@Override
public void run() {
jLabelDebug.setVisible(false);
timerShowDurationRuns = false;
//fadeOut();
}
}, duration * 1000);
setCursor(Cursor.getDefaultCursor());
}
您正在將標籤設置爲不可見 - 即改變指令的指令 - 加上jtextArea在哪裏? – gpasch
假設您使用佈局管理器,當您更改組件的可見狀態時,需要計算佈局以補償該組件的丟失(因爲不可見組件會佔用空間) – MadProgrammer