1. 程式人生 > 程式設計 >Java實現動態數字時鐘

Java實現動態數字時鐘

本文例項為大家分享了Java實現動態數字時鐘的具體程式碼,供大家參考,具體內容如下

構建:

Clock繼承 JFrame 為執行頁面
ClockText 測試類 建立 Clock 物件

執行效果:

具體實現:

一、Clock類

  • 四個JPnal 三個放時間 最後一個放日期
  • 放時間的三個JPnal 分別加入 地點 時間 按鈕
  • 最後一個按鈕新增日期

具體實現如下:

public class Clock extends JFrame {
 private JPanel jPanelBeijing;
 private JPanel jPanelNewYork;
 private JPanel jPanelLondom;
 private JPanel jPanelDate;
 
 private boolean BeijingThreadFlag_IsStart = true;
 private boolean NewYorkThreadFlag_IsStart = true;
 private boolean LondonThreadFlag_IsStart = true;
 
 public Clock() {
 // TODO Auto-generated constructor stub
 jPanelBeijing = new JPanel();
 jPanelNewYork = new JPanel();
 jPanelLondom = new JPanel();
 jPanelDate = new JPanel();
 
 iniRelations();
 iniLayout();
 jFrameClick();
 
 setVisible(true);
 setSize(480,225);
 setLocationRelativeTo(null);
 }
 
 private void iniLayout() {
 jPanelBeijing.setLayout(new GridLayout(3,1));
 jPanelNewYork.setLayout(new GridLayout(3,1));
 jPanelLondom.setLayout(new GridLayout(3,1));
 }
 
 // 關係
 private void iniRelations() {
 this.add(BorderLayout.WEST,jPanelBeijing);
 this.add(BorderLayout.CENTER,jPanelNewYork);
 this.add(BorderLayout.EAST,jPanelLondom);
 this.add(BorderLayout.SOUTH,jPanelDate);
 Font placeFont = new Font("楷體",Font.BOLD,36);
 JLabel jLabelBeijing = new JLabel("北京時間");
 jLabelBeijing.setFont(placeFont);
 jPanelBeijing.add(jLabelBeijing);
 setWestPanel();
 JLabel jLabelNewYork = new JLabel("紐約時間");
 jLabelNewYork.setFont(placeFont);
 jPanelNewYork.add(jLabelNewYork);
 setCenterPanel();
 JLabel jLabelLondon = new JLabel("倫敦時間");
 jLabelLondon.setFont(placeFont);
 jPanelLondom.add(jLabelLondon);
 setEastPanel();
 setDatePanel();
 }
 
 private void setWestPanel() {
 // add time for SouthPanel
 JLabel jLabelTime = new JLabel("載入中.");
 jLabelTime.setFont(new Font("宋體",30));
 Timer timeAction = new Timer(1000,new ActionListener() {
 
  public void actionPerformed(ActionEvent e) {
  long timemillis = System.currentTimeMillis();
  // 轉換日期顯示格式
  SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
  jLabelTime.setText(time.format(new Date(timemillis)));
  }
 });
 timeAction.start();
 jPanelBeijing.add(jLabelTime);
 
 Button button = new Button("北京暫停");
 button.addActionListener(new ActionListener() {
 
  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if (BeijingThreadFlag_IsStart) {
   timeAction.stop();
   button.setLabel("北京繼續");
   BeijingThreadFlag_IsStart = false;
  } else {
   timeAction.start();
   button.setLabel("北京暫停");
   BeijingThreadFlag_IsStart = true ;
  }
  }
 });
 jPanelBeijing.add(button);
 }
 
 private void setCenterPanel() {
 // add time for SouthPanel
 JLabel jLabelTime = new JLabel("載入中.");
 jLabelTime.setFont(new Font("宋體",new ActionListener() {
 
  public void actionPerformed(ActionEvent e) {
  long timemillis = System.currentTimeMillis();
  // 轉換日期顯示格式
  SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
  jLabelTime.setText(time.format(new Date(timemillis - 13 * 60 * 60 * 1000)));
  }
 });
 timeAction.start();
 jPanelNewYork.add(jLabelTime);
 
 Button button = new Button("紐約暫停");
 button.addActionListener(new ActionListener() {
 
  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if (NewYorkThreadFlag_IsStart) {
   timeAction.stop();
   button.setLabel("紐約繼續");
   NewYorkThreadFlag_IsStart = false;
  } else {
   timeAction.start();
   button.setLabel("紐約暫停");
   NewYorkThreadFlag_IsStart = true ;
  }
  }
 });
 jPanelNewYork.add(button);
 }
 
 private void setEastPanel() {
 // add time for SouthPanel
 // JLabel jLabelDate = new JLabel("Date");
 JLabel jLabelTime = new JLabel("載入中.");
 jLabelTime.setFont(new Font("宋體",new ActionListener() {
 
  public void actionPerformed(ActionEvent e) {
  long timemillis = System.currentTimeMillis();
  // SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM 月 dd
  // 日 ");
  // jLabelDate.setText(" 當前日期: " + date.format(new
  // Date(timemillis)));
  SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
  jLabelTime.setText(time.format(new Time(timemillis - 8 * 60 * 60 * 1000)));
  }
 });
 timeAction.start();
 jPanelLondom.add(jLabelTime);
 
 Button button = new Button("倫敦暫停");
 button.addActionListener(new ActionListener() {
 
  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if (LondonThreadFlag_IsStart) {
   timeAction.stop();
   button.setLabel("倫敦繼續");
   LondonThreadFlag_IsStart = false;
  } else {
   timeAction.start();
   button.setLabel("倫敦暫停");
   LondonThreadFlag_IsStart = true ;
  }
  }
 });
 jPanelLondom.add(button);
 // jPanelLondom.add(jLabelDate);
 }
 
 private void setDatePanel() {
 // add time for SouthPanel
 JLabel jLabelDate = new JLabel("載入中.");
 Timer timeAction = new Timer(1000,new ActionListener() {
 
  public void actionPerformed(ActionEvent e) {
  long timemillis = System.currentTimeMillis();
   SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");
   jLabelDate.setText(" 當前日期: " + date.format(new Date(timemillis)));
  }
 });
 timeAction.start();
 jPanelDate.add(jLabelDate);
 }
 
 private void jFrameClick(){
 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//設定不預設關閉
 addWindowListener(new WindowListener() {
 
  @Override
  public void windowOpened(WindowEvent e) {
  // TODO Auto-generated method stub
 
  }
 
  @Override
  public void windowIconified(WindowEvent e) {
  // TODO Auto-generated method stub
 
  }
 
  @Override
  public void windowDeiconified(WindowEvent e) {
  // TODO Auto-generated method stub
 
  }
 
  @Override
  public void windowDeactivated(WindowEvent e) {
  // TODO Auto-generated method stub
 
  }
 
  @Override
  public void windowClosing(WindowEvent e) {
  // TODO Auto-generated method stub
  int x = JOptionPane.showConfirmDialog(null,"確認退出麼?","友情提示",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
  if (x == 0) {
   System.exit(0);
  }
  }
 
  @Override
  public void windowClosed(WindowEvent e) {
  // TODO Auto-generated method stub
  }
 
  @Override
  public void windowActivated(WindowEvent e) {
  // TODO Auto-generated method stub
 
  }
 });
 }
}

二、建立ClockText類用於測試

public class ClockText{
 public static void main(String[] args) {
 new Clock();
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。