Java課程設計-定時器(團隊)

1、團隊介紹(沒頭腦和不高興)

  • 陳文俊[組長] 201521123047 網絡1512 宣委

  • 鄭子熙 201521123045 網絡1512

2、項目Git連接

定時器html

3、項目git提交記錄截圖

4、項目功能架構圖與主要功能流程圖

5、項目運行截圖

界面

輸入時間

運行一段時間後暫停

隱藏倒計時面板
java

6、程序關鍵代碼

public class Time {

    public static String getTime(int seconds) {
        Integer hours = seconds / 3600;
        Integer minutes = seconds / 60;
        Integer second = seconds % 60;
        String time = "";
        if (minutes >= 60)
            minutes %= 60;
        if (hours < 10)
            time += "0" + hours + " : ";
        else
            time += hours + " : ";
        if (minutes < 10)
            time += "0" + minutes + " : ";
        else
            time += minutes + " : ";
        if (second < 10)
            time += "0" + second;
        else
            time += second;
        return time;
    }

    public static Integer getSeconds(Integer hours, Integer minutes, Integer seconds) {
        return hours * 3600 + minutes * 60 + seconds;
    }
public void actionPerformed(ActionEvent e) {
            if (e.getSource() == btnBegin) {
                if (tfdHours.getText().equals("") || tfdHours.getText() == null || tfdMinutes.getText().equals("")
                        || tfdMinutes.getText() == null || tfdSeconds.getText().equals("") || tfdSeconds == null) {
                    JOptionPane.showMessageDialog(null, "請完成倒計時設置", "提示", JOptionPane.PLAIN_MESSAGE);
                } else {
                    showTime = Time.getSeconds(new Integer(tfdHours.getText()), new Integer(tfdMinutes.getText()),
                            new Integer(tfdSeconds.getText()));
                    setTime = showTime;
                    // 改變面板值
                    labTime.setText(Time.getTime(showTime));
                    labSetTime.setText("計時總秒數 : " + setTime);
                    tfdHours.setText("");
                    tfdMinutes.setText("");
                    tfdSeconds.setText("");

                    flag = true;
                    new Thread(this).start();
                }
            }
            if (e.getSource() == btnPause) {
                flag = false;
            }
            if (e.getSource() == btnContinue) {
                flag = true;
                new Thread(this).start();
            }
            if (e.getSource() == btnHidden) {
                this.remove(jpShowTime);
                repaint();
            }
            if (e.getSource() == btnShow) {
                this.add(jpShowTime).setBounds(0, 400, 1200, 400);
                repaint();
            }
            if (e.getSource() == btnExit) {
                System.exit(-1);
            }
        }

        public void run() {
            while (true) {
                if (showTime <= 0) {
                    JOptionPane.showMessageDialog(null, "時間到", "提示", JOptionPane.PLAIN_MESSAGE);
                    break;
                }
                // 判斷暫停
                if (!flag) {
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                showTime -= 1;
                labTime.setText(Time.getTime(showTime));
                labPassTime.setText("已過秒數 : " + (setTime - showTime));
                labRemainTime.setText("剩餘秒數 : " + showTime);
            }
        }

        public void keyTyped(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_F8) {
                if (tfdHours.getText().equals("") || tfdHours.getText() == null || tfdMinutes.getText().equals("")
                        || tfdMinutes.getText() == null || tfdSeconds.getText().equals("") || tfdSeconds == null) {
                    JOptionPane.showMessageDialog(null, "請完成倒計時設置", "提示", JOptionPane.PLAIN_MESSAGE);
                } else {
                    showTime = Time.getSeconds(new Integer(tfdHours.getText()), new Integer(tfdMinutes.getText()),
                            new Integer(tfdSeconds.getText()));
                    setTime = showTime;
                    // 改變面板值
                    labTime.setText(Time.getTime(showTime));
                    labSetTime.setText("計時總秒數 : " + setTime);
                    tfdHours.setText("");
                    tfdMinutes.setText("");
                    tfdSeconds.setText("");

                    flag = true;
                    new Thread(this).start();
                }
            } else if (e.getKeyCode() == KeyEvent.VK_F9) {
                flag = false;
            } else if (e.getKeyCode() == KeyEvent.VK_F10) {
                flag = true;
                new Thread(this).start();
            } else if (e.getKeyCode() == KeyEvent.VK_F11) {
                this.remove(jpShowTime);
                repaint();
            } else if (e.getKeyCode() == KeyEvent.VK_F12) {
                this.add(jpShowTime).setBounds(0, 400, 1200, 400);
                repaint();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    }

7、尚待改進或者新的想法

界面能夠花時間作得更加美觀,還用圖標來代替按鈕。git

8、團隊成員任務分配,團隊成員課程設計博客連接(以表格形式呈現),標明組長。

姓名 學號 任務分配 博客地址
陳文俊[組長] 201521123047 框架構建、時間設置面板、倒計時面板、按鈕設置 博客地址
鄭子熙 201521123045 main函數的編寫、負責TIme函數的編寫、用於計算時間、按鈕功能的實現 博客地址
相關文章
相關標籤/搜索