Java 倒计时窗口关闭
当计时器窗口完成30秒时,如何通过代码关闭计时器窗口 这是我的密码Java 倒计时窗口关闭,java,swing,Java,Swing,当计时器窗口完成30秒时,如何通过代码关闭计时器窗口 这是我的密码 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; import java.util.Date; class CountdownTimer extends JFrame { private static final long serialVersionUID = -36
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
class CountdownTimer extends JFrame {
private static final long serialVersionUID = -3613327984360590187L;
public CountdownTimer() {
setTitle("Countdown Timer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final long MINUTES = 30000;
final SimpleDateFormat sdf = new SimpleDateFormat("mm : ss");
final JLabel clock = new JLabel(sdf.format(new Date(MINUTES)), JLabel.CENTER);
JLabel text = new JLabel("Time Remaining: ");
int x = 0;
ActionListener actionListener = new ActionListener() {
long x = MINUTES - 1000;
public void actionPerformed(ActionEvent ae) {
clock.setText(sdf.format(new Date(x)));
x -= 1000;
}
};
new javax.swing.Timer(1000, actionListener).start();
JPanel jPanel = new JPanel();
jPanel.add(text);
jPanel.add(clock);
getContentPane().add(jPanel);
pack();
}
public static void main(String args[]) {
new CountdownTimer().setVisible(true);
}
}
this.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
当计时器窗口完成30秒时,如何通过代码关闭计时器窗口
这是我的代码试试这个:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
class CountdownTimer extends JFrame {
private static final long serialVersionUID = -3613327984360590187L;
public CountdownTimer() {
setTitle("Countdown Timer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final long MINUTES = 30000;
final SimpleDateFormat sdf = new SimpleDateFormat("mm : ss");
final JLabel clock = new JLabel(sdf.format(new Date(MINUTES)), JLabel.CENTER);
JLabel text = new JLabel("Time Remaining: ");
int x = 0;
ActionListener actionListener = new ActionListener() {
long x = MINUTES - 1000;
public void actionPerformed(ActionEvent ae) {
clock.setText(sdf.format(new Date(x)));
x -= 1000;
}
};
new javax.swing.Timer(1000, actionListener).start();
JPanel jPanel = new JPanel();
jPanel.add(text);
jPanel.add(clock);
getContentPane().add(jPanel);
pack();
}
public static void main(String args[]) {
new CountdownTimer().setVisible(true);
}
}
this.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
public void actionPerformed(ActionEvent ae) {
clock.setText(sdf.format(new Date(x)));
x -= 1000;
if (x < 0) // Add this line
CountdownTimer.this.dispose(); // And this one too
}
public void actionPerformed(ActionEvent ae){
clock.setText(sdf.format(新日期(x));
x-=1000;
if(x<0)//添加此行
倒计时。this.dispose();//还有这个
}
调用dispose()
当x
在他的代码中是时,它将是dispatchEvent(新的WindowEvent(CountdownTimer.this,WindowEvent.WINDOW\u CLOSING))代码>,最复杂的表达方式是yourFrame.setVisible(false)代码>…我以为他真的想关闭这个程序。@Holger,难道这不是隐藏窗口吗?其中之一:dispose()
,dispatchEvent()
或System.exit(0)
将是OP想要的,我猜。对,我忽略了setDefaultCloseOperation
调用。然而,每种可能性都有一种简单的形式:HIDE\u ON\u CLOSE
→ <代码>设置可见(假)
,在关闭时处理
→ <代码>处置()
,在关闭时退出→ <代码>系统退出(0)代码>。在这两种情况下,dispatchEvent
都是不必要的。