Java实现动态数字时钟
作者:_yuanhao 发布时间:2022-05-07 08:56:56
标签: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("宋体", 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();
}
}
来源:https://blog.csdn.net/qq_43377749/article/details/85096893


猜你喜欢
- 在上一篇文章中,我们实现了统计每个产品和地区的销售额,如果现在需要统计每个产品和地区所占市场份额的百分比,那么使用堆叠条形图是不合适的,我们
- [LeetCode] 144. Binary Tree Preorder Traversal 二叉树的先序遍历Given a binary
- 最近项目中使用了 MyBatis-Plus,点击看官方文档。使用一个新的框架,首先是验证框架的使用。 使用 MyBatis-Plu
- 简介在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI 设计师给我们出了个难题 —— 弄一
- 做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查
- 前言借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点
- 1. 背景Java Persistence with Hibernate 在12.2.1小节使用如下例子描述 n+1查询问题:List<
- 1使用背景在实际项目中其中一部分逻辑可能会因为调用了外部服务或者等待锁等情况下出现不可预料的异常,在这个时候我们可能需要对调用这部分逻辑进行
- 很多初学者都对C中的指针很迷糊,希望这篇blog能帮助到大家:1.什么是“指针”:在执行C程序的时候,由于我们的数据是存储在内存中的。所以对
- java引用传递的三种类型我这里使用了mldn视频里的例子,只用于学习交流。第一种结果:调用前:50调用后:1000分析:理解:好理解第二种
- 前言:我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键
- 昨天,我同学用Eclipse安装Aptana插件,她弄了一天都没安装起,最后找了我。 然后我也按照她的那个方法安装,结果一样,安装不成功!网
- 本文研究的主要是Java数组的扩容的相关代码示例,具体实现过程如下所示。在写程序的过程中,我们常常会碰见数组空间不够用的情况,比如我已经初始
- 本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能。首先看效果图项目结构图接下来用代码重点学习
- 前文简单介绍了Android中SurfaceView的基本使用,本文就来介绍一下SurfaceView与多线程的混搭。SurfaceView
- 一、什么是CharacterEncodingFilter官方解释如下是spring内置过滤器的一种,用来指定请求或者响应的编码格式。在web
- 前言前段时间碰到了中转文件的需求,需要使用HttpClient中转一下文件,过程为:在实现这个需求的过程中就用得到了MultipartFil
- Java提示缺少返回值语句怎么办?这里我们给大家提供具体的解决方法。首先,以下面的程序为例,会看到在控制台有:错误:缺少返回语句的提示。找到
- .NET具有较多的优点,如:标准集成,简化应用,对移动设备的支持等。但使用.NET编写的程序有个致命的缺点:易被反编译,且运行时占用较大的资
- 前言WebView(网络视图)在Andorid中就是用来显示网页的,下面我们来一起看看它是如何使用的。一、基本使用1.声明权限,WebVie