更改 JLabel 并等待一段时间退出
Change JLabel and wait for sometime to exit
我想在点击按钮的时候改变标签,然后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); }
在您的 doStop() 中使用 [=13a=]。像这样
public void doStop() {
Timer t=new Timer(3000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
t.start();
}
我猜问题出在 thread.sleep,尝试改用计时器。
有一个例子:
public void doStop() {
long savedTime=System.currentTimeMillis(), actualTime=System.currentTimeMillis();
while((savedTime+3000 > actualTime) ){
actualTime=System.currentTimeMillis()
}
System.exit(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();
文档:
Fires one or more ActionEvents at specified intervals. An example use
is an animation object that uses a Timer as the trigger for drawing
its frames.
学习MORE
我想在点击按钮的时候改变标签,然后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); }
在您的 doStop() 中使用 [=13a=]。像这样
public void doStop() {
Timer t=new Timer(3000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
t.start();
}
我猜问题出在 thread.sleep,尝试改用计时器。 有一个例子:
public void doStop() {
long savedTime=System.currentTimeMillis(), actualTime=System.currentTimeMillis();
while((savedTime+3000 > actualTime) ){
actualTime=System.currentTimeMillis()
}
System.exit(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();
文档:
Fires one or more ActionEvents at specified intervals. An example use is an animation object that uses a Timer as the trigger for drawing its frames.
学习MORE