您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用Java怎么實現一個動態數字時鐘功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
具體實現:
一、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("宋體", Font.BOLD, 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("宋體", Font.BOLD, 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 - 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("宋體", Font.BOLD, 30)); 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))); 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(); } }
關于使用Java怎么實現一個動態數字時鐘功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。