当我在程序中执行以下方法时,一些组件会在计时器用完时更改。例如,我在jTextArea中创建了大小的更改,而没有包含构造的任何事件来更改其大小。如果我首先展开jTextArea然后启动计时器,则无关紧要,反之亦然。
//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());
}
答案 0 :(得分:1)
创建JTextArea时,您应该使用如下代码:
JTextArea textArea = new JTextArea(5, 30);
现在,文本区域将能够确定其首选大小,并在您向其添加文本时保持固定。
然后,当您将其添加到GUI时,您可以使用以下代码:
frame.add( new JScrollPane( textArea ) );
现在,当您添加更多数据时,文本区域大小将保持固定,但在需要时将显示滚动条。