学习操作系统课程的时候提到了一个非常重要的概念thread(线程),为了加深理解老师要求课后用java写一个秒表的小程序,经过两个小时的努力终于写完了,界面截图如下所示!
实体类StopWatch
public class StopWatch {
private int hour;
private int minute;
private double second;
//以一100毫秒为单位设置时间
public void setTime(float t){
hour= (int)t/36000;
minute = ((int)t-hour*36000)/600;
second = (t%600)/10.00;
}
public String toString(){
return String.format("%02d : %02d : %04.1f", hour,minute,second);
}
}
GUI类StopWatchGUI
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class StopWatchGUI extends JPanel{
private JPanel centerPanel;
private JPanel southPanel;
private JLabel label;
private JButton start;
private JButton stop;
private JButton reset;
private boolean flag=false;
private float time=0;
private StopWatch watch;
public StopWatchGUI(){
setSouthPanel();
setCenterPanel();
this.setLayout(new BorderLayout());
this.add(centerPanel,BorderLayout.CENTER);
this.add(southPanel,BorderLayout.SOUTH);
watch=new StopWatch();
new Thread(){
public void run(){
while(true){
if(flag){//start the stopWatch
watch.setTime(time);
label.setText(watch.toString());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
time+=1;
}
}
}
}.start();
}
private void setCenterPanel(){
centerPanel=new JPanel();
label=new JLabel("00 : 00 : 00.0",JLabel.CENTER);
label.setFont(new Font("Serif", Font.BOLD, 30));
centerPanel.add(label);
}
private void setSouthPanel(){
southPanel=new JPanel();
start=new JButton("Start");
stop=new JButton("Stop");
reset=new JButton("Reset");
start.addActionListener(new StartListener());
stop.addActionListener(new StopListener());
reset.addActionListener(new ResetListener());
southPanel.setLayout(new FlowLayout());
southPanel.add(start);
southPanel.add(stop);
southPanel.add(reset);
}
public static void main(String[] args) {
JFrame frame=new JFrame("StopWatch");
frame.setContentPane(new StopWatchGUI());
frame.setSize(300,120);
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=frame.getSize();
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class StartListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
flag=true;
start.setEnabled(false);
stop.setEnabled(true);
reset.setEnabled(false);
}
}
class StopListener implements ActionListener{
public void actionPerformed(ActionEvent event) {
flag=false;
start.setText("Start");
start.setEnabled(true);
reset.setEnabled(true);
stop.setEnabled(false);
}
}
class ResetListener implements ActionListener{
public void actionPerformed(ActionEvent event) {
flag=false;
time=0;
watch.setTime(time);
label.setText(watch.toString());
start.setEnabled(true);
stop.setEnabled(true);
}
}
}
分享到:
相关推荐
在这个“Java Swing秒表”项目中,开发者利用Swing组件创建了一个功能丰富的秒表应用,它可以精确地显示时、分、秒以及毫秒,为用户提供实时计时功能。 首先,Swing秒表去掉了窗口的默认修饰,这意味着它可能采用了...
在Java中实现秒表功能,我们需要利用Java Swing或JavaFX库来创建GUI,这两个库提供了丰富的组件和工具来构建桌面应用程序。描述中提到的"javaSe"指的是Java Standard Edition,它包含了开发和运行桌面应用的基本Java...
对于想要学习Java GUI编程,特别是Swing和多线程的初学者来说,这是一个很好的实践项目。 1. **Java Swing**: Swing是Java Foundation Classes (JFC)的一部分,用于构建图形用户界面(GUI)。它提供了一套丰富的组件...
本项目主要介绍了如何在Java中创建一个包含时钟和秒表功能的应用程序。该项目使用了Swing库来构建用户界面,并利用多线程技术来实现时间和秒表的实时更新。 #### 二、核心组件介绍 ##### 1. TimeCounting_Thread 类...
秒表在日常生活中给我们带来了许多的方便,尤其是在体育教学应用得非常广泛,人们常常把这个...该程序是一个图形界面的秒表,主要采用了awt包和swing包提供各种组件,实现了分组记时的功能,使用起来非常的清晰方便。
在本课程设计中,我们将深入探讨如何构建一个功能完备的数字秒表,具备启动、暂停、继续和清零等核心功能,并且计数范围能够覆盖0:00:00至9分59秒99毫秒。 首先,我们要理解数字秒表的工作原理。数字秒表基于微处理...
本文将详细解析如何使用Java构建一个简单但功能完善的秒表,特别是针对“超过百秒以ABC表示”这一特殊需求的实现。 #### 1. 导入必要包 在代码片段中,我们首先看到了对Java AWT(Abstract Window Toolkit)和...
这些库提供了高精度的时间戳,可以用来计算两个时间点之间的差值,进而实现秒表的计时功能。 在设计秒表时,首先要考虑的是用户界面。一个简洁易读的用户界面可以让用户方便地启动、暂停、重置计时。这可能涉及到...
在这个上下文中,描述提到的是一个由个人编写的秒表程序,这意味着它可能是一个用Java编程语言实现的软件应用。 Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性闻名。编写秒表程序涉及...
【描述】描述中的“秒表计时器”是指一个能够精确测量时间间隔的软件工具,类似于体育比赛中使用的秒表。在这个Java程序中,它不仅能够实时显示时间流逝,还特别加入了“计次”功能,这意味着用户可以多次启动和停止...
在Java中,我们可以使用内置的`System.currentTimeMillis()`或`System.nanoTime()`方法来创建一个简单的秒表功能。本项目名为“miaobiao.rar”,提供了一个用于学习的Java秒表程序,该程序不仅实现了基本的计时功能...
在本项目“stopwatch”中,我们看到的是一个简单的秒表应用,使用了Swing和NetBeans IDE来实现。 NetBeans IDE 是一个流行的集成开发环境,特别适合于Java开发。它提供了代码编辑、调试、版本控制和项目管理等多种...
开发者可能使用了诸如JFrame、JButton、JLabel等Swing组件来构建界面,并通过线程管理和时间计算来实现秒表的计时功能。通过学习这个项目,初学者可以加深对Java GUI编程的理解,同时也能掌握如何在实际应用中处理...
接下来,构建这样一个“秒表小炸弹”涉及到以下几个关键点: 1. **用户界面**:用户需要能够设置计时时间并启动/停止计时器。这通常通过简单的图形用户界面(GUI)实现,如按钮和显示时间的文本框。可以使用各种...
在本课程设计任务中,我们将关注的是开发一个数字秒表应用。数字秒表是一种常见的计时工具,尤其在体育赛事、实验室测量以及日常生活中的各种计时需求中广泛应用。设计一个数字秒表涉及到计算机编程、时间处理和用户...
在本示例中,我们使用Java的多线程机制来实现计时器功能,通过创建一个独立的线程来执行计时操作。 源代码解析 源代码中,我们首先引入了必要的Java包,包括javax.swing、java.awt等。然后,我们定义了计时器的...
标题中的“32 10秒的秒表 (2).zip”似乎是一个关于计时工具的文件,可能是软件、应用程序或者一个简单的计时脚本。然而,由于标签部分为空,我们无法直接获得与IT知识相关的具体领域信息。从描述“32 10秒的秒表 (2)...
本项目——"clock_app_JavaSwing",是一个利用Java Swing开发的桌面应用程序,它包含了四个功能丰富的模块:数字时钟、模拟时钟、日历和计时器/秒表。 ### 1. 数字时钟与模拟时钟 数字时钟是基于文本或数字显示...
"毕业设计作品_课程设计任务书-数字秒表.rar"这个标题表明这是一个与毕业设计或课程设计相关的项目,具体是关于创建一个数字秒表的应用。"RAR"是文件压缩格式,通常用于打包多个文件或文件夹,便于存储和传输。 ...