声明,代码完全是自己手动敲得,不过完全是按照邵发的教程来的,所以代码与其等同,因此特别强调仅供学习参考,并且转载注明出处,并备注来源www.afanihao.cn
小广告:发哥的主页:www.afanihao.cn (阿发你好.cn)
代码部分分为两个类:SwingDemo类
import javax.swing.JFrame;
public class SwingDemo {
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run()
{
creatrGUI();
}
});
}
protected static void creatrGUI()
{
MyFrame frame = new MyFrame("SwingDemo!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
frame.setVisible(true);
}
}
另外一个是MyFame类
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
public class MyFrame extends JFrame{
JLabel display = new JLabel("--:--:--");
//导入的是javax.swing.Timer
Timer timer;
public MyFrame(String title)
{
super(title);
//ContentPane()
JPanel root = new JPanel();
this.setContentPane(root);
root.setLayout(new BorderLayout());
root.add(display,BorderLayout.CENTER);
display.setFont(new Font("宋体",Font.PLAIN,80));
display.setHorizontalAlignment(SwingConstants.CENTER);
display.setOpaque(true);
display.setBackground(Color.WHITE);
display.setForeground(Color.BLUE);
//工具栏
Box toolbar = Box.createHorizontalBox();
JButton startButton = new JButton("开始");
JButton stopButton = new JButton("停止");
toolbar.add(startButton);
toolbar.add(Box.createHorizontalStrut(10));
toolbar.add(stopButton);
root.add(toolbar,BorderLayout.PAGE_START);
startButton.addActionListener((e) ->{
onStart();
});
stopButton.addActionListener((e) ->{
onStop();
});
}
private void onStop()
{
if(timer != null)
{
timer.stop();
timer = null;
}
display.setText("--:--:--");
}
private void onStart()
{
if(timer != null)
{
return;
}
//创建定时器每隔,每隔1000毫秒执行一次
ActionListener task = new UpdateTask();
timer = new Timer(1000,task);
timer.start();
}
private class UpdateTask implements ActionListener
{
@Override
public void actionPerformed(ActionEvent arg0)
{
// 1 actionPerformed() 在界面线程里运行,所以必须迅速返回
// 2 在这里可以直接更新UI
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String timerstr = sdf.format(System.currentTimeMillis());
display.setText(timerstr);
}
}
}
运行结果:
再次强调,仅供学习参考,转载注明出处,并且备注来源www.afanihao.cn