在下面的代码中,我正在运行我的方法,它将文本添加到JTextArea,然后我等待4秒并添加更多文本。然而,它只需等待四秒钟,然后立即将所有文本放下。我怎样才能使它添加第一个文本,然后等待添加第二个文本块?
public static void configuresettings() {
GUI.add("To Begin, Go to www.opionsxo.com");
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GUI.add("Welcome to Configure Settings!");
}
我想出来,如果有人对如何感兴趣。然后查看下面的代码......
public static void configuresettings() {
GUI.add("To Begin, Go to www.opionsxo.com");
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
GUI.add("Welcome to Configure Settings!");
}
};
Timer timer = new Timer( 4000, actionListener );
timer.setRepeats(false);
timer.start();
}
答案 0 :(得分:0)
您不应将Thread.sleep
与swing
一起使用,否则会阻止您的申请。例如,如果您调整窗口大小或在应用程序前面移动窗口,它将不会根据需要重新绘制,因为您已将其停止。相反,您应该使用Swing Timers
。
你的问题可能是因为你应该在 < / p>
revalidate()
之前JTextArea
sleep
或者其他什么,但如上所述,你应该改变它的实现。
在此处阅读更多内容:http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
答案 1 :(得分:0)
不要在Event Dispatching Thread的上下文中做任何可能导致它停止的事情,比如调用Thread.sleep
。
相反,尝试使用javax.swing.Timer
或SwingWorker
看看:
了解更多详情
例如: