我想在单击按钮时更改标签,然后在3秒后退出程序。但是如果我点击按钮,标签就不会改变。它只在3秒后退出。这是我的逻辑
更改标签。
睡3秒
然后退出程序。
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Stopping the program.");
state.setText("Bye...");
state.setBackground(SystemColor.textHighlight);
doStop();
}
});
state = new JLabel("Not listening");
state.setForeground(new Color(255, 255, 255));
state.setBackground(new Color(204, 0, 51));
state.setHorizontalAlignment(SwingConstants.CENTER);
state.setBounds(10, 222, 488, 24);
state.setOpaque(true);
frame.getContentPane().add(state);
public void doStop() {
try{
Thread.sleep(3000);
} catch(InterruptedException e){
}
System.exit(0); }
答案 0 :(得分:0)
在doStop()中使用javax.swing.TImer。喜欢这个
public void doStop() {
Timer t=new Timer(3000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
t.start();
}
答案 1 :(得分:0)
使用javax.swing.Timer
之类的:
final Timer time= new Timer(3000,new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
删除doStop
方法,将此代码包括在内。您的按钮actionListener
就像这样
System.out.println("Stopping the program.");
state.setText("Bye...");
state.setBackground(SystemColor.textHighlight);
time.start();
Doc:
按指定的时间间隔触发一个或多个ActionEvent。一个示例用途 是一个动画对象,它使用Timer作为绘图的触发器 它的框架。
了解MORE
答案 2 :(得分:-1)
我猜问题是thread.sleep,尝试使用计时器代替。 有一个例子:
public void doStop() {
long savedTime=System.currentTimeMillis(), actualTime=System.currentTimeMillis();
while((savedTime+3000 > actualTime) ){
actualTime=System.currentTimeMillis()
}
System.exit(0);}