62,620
社区成员
发帖
与我相关
我的任务
分享



import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
public class CountDownDemo extends JFrame {
private final String COUNT = "10.0";
private final String START = "start";
private final String PAUSE = "pause";
private final String RESUME = "resume";
private JLabel jlblCountDown;
private JButton jbtnStart;
private JButton jbtnPause;
private ActionListener listener = new ActionListener() {
boolean available = true; // 倒计时是否工作
boolean isRunning = false; // 线程是否在运行
Thread t = null;
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(t == null){
t = new Thread(new Runnable() {
@Override
public void run() {
float i = Float.parseFloat(COUNT);
while(i > 0){
if(available){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
i -= 0.1f;
jlblCountDown.setText(String.format("%.1f", i<0?0:i));
}
}
isRunning = false;
t = null;
}
});
}
if(source == jbtnStart){
if(!isRunning){
isRunning = true;
t.start();
}
}
else if(source == jbtnPause){
if(PAUSE.equals(jbtnPause.getText())){
jbtnPause.setText(RESUME);
available = false;
}
else{
available = true;
jbtnPause.setText(PAUSE);
}
}
}
};
private void initUI(){
jlblCountDown = new JLabel(COUNT, SwingConstants.CENTER);
jbtnStart = new JButton(START);
jbtnPause = new JButton(PAUSE);
JPanel panel = new JPanel();
panel.add(jbtnStart);
panel.add(jbtnPause);
add(jlblCountDown, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
jbtnStart.addActionListener(listener);
jbtnPause.addActionListener(listener);
}
public CountDownDemo(){
initUI();
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
CountDownDemo demo = new CountDownDemo();
demo.setVisible(true);
}
});
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.time.*;
public class CountDownTimerExample {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable(){
@Override public void run(){
final JFrame frame = new JFrame("CountDownTimerExample");
final JLabel message = new JLabel("");
frame.add(message);
final JButton start = new JButton("Start");
final Timer timer = new Timer(100, new ActionListener(){
Duration d = Duration.ofSeconds(5);
@Override public void actionPerformed(ActionEvent e){
if(d.isNegative()) return;
message.setText(d.toString().substring(2));
d = d.minusMillis(100);
}
});
start.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
timer.start();
}
});
frame.add(start, BorderLayout.PAGE_END);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(300,200));
frame.pack();
frame.setVisible(true);
}
});
}
}
Java8编译运行