【從零開始學 Java 程式設計】Timer 元件

【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。

Timer 元件

可以指定時間去觸發一個或多個事件

範例

倒數60秒,按下開始按鈕後,每隔一秒,文字標籤上數字每次減一變化

完整程式碼

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class DemoTimer {
    private JLabel jLabel;
    private int intTimeLeft;
    static Timer timer;
    static int interval;

    private int countdownVal = 60;
    int delay = 1000;

    ActionListener taskPerformer = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (countdownVal >= 0) {
                jLabel.setText(Integer.toString(countdownVal--));
            } else {
                timer.stop();
            }
        }
    };

    public void addComponentsToPane(Container pane) {

        jLabel = new JLabel("60");
        jLabel.setFont(new Font("Courier New", Font.BOLD, 100));

        jLabel.setHorizontalAlignment(SwingConstants.CENTER);
        pane.add(jLabel, BorderLayout.CENTER);

        JButton jButton = new JButton("開始");
        pane.add(jButton, BorderLayout.SOUTH);
        
        //delay 時間間隔,單位為毫秒,1000毫秒為1秒
        timer = new Timer(delay, taskPerformer);

        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (!timer.isRunning()) {
                    timer.start();
                }
            }
        });

    }

    public DemoTimer() {
        JFrame frame = new JFrame("HKT線上教室");
        // 獲取螢幕解析度
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        // 設定視窗大小佔螢幕四分之一
        frame.setSize(dimension.width / 2, dimension.height / 2);

        //設定視窗顯示在螢幕畫面中間位置
        int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
        int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
        frame.setLocation(x, y);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉可以關掉程式
        //在 Pane 畫面中加入元件
        addComponentsToPane(frame.getContentPane());
//        frame.pack();
        frame.setVisible(true);
    }

    //最一開始程式進入點
    public static void main(String[] args) {
        //使用 invokeLater 確保 UI 在排程執行緒內
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new DemoTimer();
            }
        });
    }
}

那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

留言

這個網誌中的熱門文章

最新入門零基礎【從零開始學 Java 程式設計】線上教學課程目錄

NS - Nintendo Switch 遊戲比價網

【從零開始學 Kotlin 程式設計】Android Kotlin 線上教學課程目錄