import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Timer;
import javax.swing.*;
/**
* シンプルなタイマー
*/
public class SimpleTimer extends JWindow {
/**
* メイン関数
*/
public static void main(String[] args) {
SimpleTimer simpleTimer = new SimpleTimer();
simpleTimer.pack();
simpleTimer.setAlwaysOnTop(true);
simpleTimer.setVisible(true);
}
private Long startTimeMillis;
private JLabel label;
private SimpleDateFormat dateFormat;
private Timer timer;
/**
* コンストラクタ
*/
public SimpleTimer() {
initDateFormat();
initConponents();
resetTime();
updateLabelText();
startTimer();
}
/**
* DateFormatの初期化
*/
private void initDateFormat() {
dateFormat = new SimpleDateFormat("HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
}
/**
* GUIコンポーネントの初期化
*/
private void initConponents() {
label = new JLabel();
label.setFont(new Font(label.getFont().getName(), Font.BOLD, 14));
label.setOpaque(true);
label.setBackground(Color.black);
label.setForeground(Color.white);
label.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
getContentPane().add(label);
final JPopupMenu popup = new JPopupMenu();
JMenuItem menuItem1 = new JMenuItem("Reset");
menuItem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resetTime();
}
});
popup.add(menuItem1);
JMenuItem menuItem2 = new JMenuItem("Exit");
menuItem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popup.add(menuItem2);
label.setComponentPopupMenu(popup);
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON2
&& e.getClickCount() == 1) {
popup.setVisible(true);
}
}
});
}
/**
* リセット
*/
private void resetTime() {
startTimeMillis = Calendar.getInstance().getTimeInMillis();
}
/**
* ラベル更新
*/
private void updateLabelText() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
long elapsedTime = Calendar.getInstance().getTimeInMillis()
- startTimeMillis;
Date date = new Date(elapsedTime);
label.setText(dateFormat.format(date));
}
});
}
/**
* タイマー開始
*/
private void startTimer() {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
updateLabelText();
}
}, 0, 1000);
}
}
分享到:
相关推荐
java定时器,timer类操作详解 java定时器,timer类操作详解
java 定时器(Timer) java 定时器(Timer) java 定时器(Timer)
本文首先设计一个单次定时器Timer+TimerTask,然后再次基础上设计一个循环定时器。
Java定时器Timer简述.pdf
在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...
主要介绍了java定时器timer的使用方法代码示例,向大家分享了两部分代码,详细内容请参见正文,还是比较不错的,需要的朋友可以参考下。
java定时器说明与应用
Java定时器Timer简述共8页.pdf.zip
java中定时器timer类的实现和源代码
主要为大家详细介绍了Java定时器Timer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
NULL 博文链接:https://jiangnanlove.iteye.com/blog/1958648
一个很简单的java定时器,很适合初学者呢,希望能够给你一点的提示哦
java Timer定时器实例 Spring实例.doc java Timer定时器实例 Spring实例.doc
Timer java定时器
java_Timer定时器实例_Spring实例
主要介绍了Java 定时器(Timer)及线程池里使用定时器实例代码的相关资料,需要的朋友可以参考下
java多线程定时器