Java實現(xiàn)的動態(tài)數(shù)字時鐘功能示例【顯示世界時間】
本文實例講述了Java實現(xiàn)的動態(tài)數(shù)字時鐘功能。分享給大家供大家參考,具體如下:
構建:
1. Clock繼承 JFrame 為運行頁面
2. ClockText 測試類 創(chuàng)建 Clock 對象
運行效果:

具體實現(xiàn):
一、Clock類
- 四個JPnal 三個放時間 最后一個放日期
- 放時間的三個JPnal 分別加入 地點 時間 按鈕
- 最后一個按鈕添加日期
具體實現(xiàn)如下:
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("北京繼續(xù)");
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("紐約繼續(xù)");
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("倫敦繼續(xù)");
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
}
});
}
}
二、創(chuàng)建ClockText類用于測試
public class ClockText{
public static void main(String[] args) {
new Clock();
}
}
PS:這里再為大家推薦幾款時間及日期相關工具供大家參考使用:
在線世界各地時間查詢:
http://tools.jb51.net/zhuanhuanqi/worldtime
Unix時間戳(timestamp)轉換工具:
http://tools.jb51.net/code/unixtime
在線日期/天數(shù)計算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
更多關于java相關內(nèi)容感興趣的讀者可查看本站專題:《java日期與時間操作技巧匯總》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
使用spring security明文密碼校驗時報錯-BadCredentialsException:&nbs
小編遇到這樣一個問題在學習spring security時使用明文密碼進行登錄校驗時報錯"org.springframework.security.authentication.BadCredentialsException: Bad credentials,今天給大家分享問題原因及解決方案,感興趣的朋友一起看看吧2023-10-10
SpringCloud災難性雪崩效應處理方法之降級實現(xiàn)流程詳解
這篇文章主要介紹了SpringCloud災難性雪崩效應處理方法之降級,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧<BR>2022-11-11
關于idea引入spring boot <parent></parent>父依賴標紅問題
這篇文章主要介紹了idea引入spring boot <parent></parent>父依賴標紅問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10

