1. Clock继承 JFrame 为运行页面
2. ClockText 测试类 创建 Clock 对象
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 } }); }}