定時器html
界面
輸入時間
運行一段時間後暫停
隱藏倒計時面板
java
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) { } }
界面能夠花時間作得更加美觀,還用圖標來代替按鈕。git
姓名 | 學號 | 任務分配 | 博客地址 |
---|---|---|---|
陳文俊[組長] | 201521123047 | 框架構建、時間設置面板、倒計時面板、按鈕設置 | 博客地址 |
鄭子熙 | 201521123045 | main函數的編寫、負責TIme函數的編寫、用於計算時間、按鈕功能的實現 | 博客地址 |