Java 定時器類 Timer 使用方法

b4c2 9年前發布 | 3K 次閱讀 Java

 
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();
}

private void initDateFormat() {

    dateFormat = new SimpleDateFormat("HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
}


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);
}

}

</pre>

 本文由用戶 b4c2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!