数字钟表的设计与实现(java)

2023-12-18 15:37:34

概述

本文主要介绍了一个基于Java编程的数字钟表的设计与实现。通过使用Java的Swing库,我们创建了一个简单的图形用户界面,用户可以在其中输入小时、分钟和秒钟的值,并通过点击“设置时间”按钮来更新钟表的显示。同时,我们还添加了一个定时器,每隔1秒自动更新钟表的时间。

在设计数字钟表时,我们首先考虑了用户友好性和易用性。为了实现这一目标,我们采用了简洁明了的界面布局,使用户能够轻松地输入时间并查看钟表的显示。

在实现过程中,我们充分利用了Java Swing库提供的各种组件和功能。例如,我们使用了JFrame类来创建主窗口,JPanel类来组织界面元素,JButton类来创建按钮,以及JLabel类来显示时间。此外,我们还使用了Timer类来实现定时器功能,以便每隔1秒自动更新钟表的时间。

需求分析

显示当前时间:数字钟表需要能够实时显示当前的小时、分钟和秒钟。

设置时间:用户可以通过输入小时、分钟和秒钟来设置数字钟表的时间。

界面设计:数字钟表需要有一个简洁明了的界面,包括显示时间的标签和用于输入时间的文本框。

事件处理:当用户点击设置时间按钮时,需要将输入的时间设置为数字钟表的时间,并更新显示。

?

程序代码

import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;

import javax.swing.*;

@SuppressWarnings("serial")
public class Clock extends JFrame {
    // 定义一个JLabel对象,用于显示时间
    private JLabel timeLabel;
    // 定义三个JTextField对象,分别用于输入小时、分钟和秒钟
    private JTextField hourField;
    private JTextField minuteField;
    private JTextField secondField;

    public Clock() {
        // 设置窗口标题为"模拟钟表"
        setTitle("模拟钟表");
        // 设置窗口大小为400x400像素
        setSize(400, 400);
        // 设置窗口关闭时的操作为退出程序
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 将窗口居中显示
        setLocationRelativeTo(null);

        // 创建一个JLabel对象,用于显示时间
        timeLabel = new JLabel();
        // 设置字体为Arial,字号为40,加粗
        timeLabel.setFont(new Font("Arial", Font.BOLD, 40));
        // 设置文本水平居中对齐
        timeLabel.setHorizontalAlignment(JLabel.CENTER);
        // 设置文本垂直居中对齐
        timeLabel.setVerticalAlignment(JLabel.CENTER);
        // 设置背景颜色为白色
        timeLabel.setOpaque(true);
        timeLabel.setBackground(Color.WHITE);

        // 创建一个JPanel对象,用于放置时间相关的组件
        JPanel timePanel = new JPanel(new GridLayout(1, 3));
        // 创建三个JLabel对象,分别表示小时、分钟和秒钟的标签
        JLabel hourLabel = new JLabel("小时");
        JLabel minuteLabel = new JLabel("分钟");
        JLabel secondLabel = new JLabel("秒钟");
        // 创建三个JTextField对象,分别用于输入小时、分钟和秒钟的值
        hourField = new JTextField(2);
        minuteField = new JTextField(2);
        secondField = new JTextField(2);
        // 创建一个JButton对象,用于设置时间
        JButton setTimeButton = new JButton("设置时间");

        // 将各个组件添加到timePanel中
        timePanel.add(hourLabel);
        timePanel.add(minuteLabel);
        timePanel.add(secondLabel);
        timePanel.add(hourField);
        timePanel.add(minuteField);
        timePanel.add(secondField);
        timePanel.add(setTimeButton);

        // 为设置时间的按钮添加点击事件监听器
        setTimeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取用户输入的小时、分钟和秒钟的值,并转换为整数类型
                int hour = Integer.parseInt(hourField.getText());
                int minute = Integer.parseInt(minuteField.getText());
                int second = Integer.parseInt(secondField.getText());
                // 调用setTime方法设置时间
                setTime(hour, minute, second);
            }
        });

        // 将timeLabel和timePanel添加到窗口的内容面板中,并设置布局为边界布局
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(timeLabel, BorderLayout.CENTER);
        getContentPane().add(timePanel, BorderLayout.SOUTH);

        // 创建一个定时器,每隔1000毫秒(1秒)触发一次actionPerformed方法
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 调用updateTime方法更新时间
                updateTime();
            }
        });
        // 启动定时器
        timer.start();
    }

    // 更新时间的私有方法
    private void updateTime() {
        // 获取当前时间的小时、分钟和秒钟的值
        int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
        int minute = Calendar.getInstance().get(Calendar.MINUTE);
        int second = Calendar.getInstance().get(Calendar.SECOND);
        // 调用setTime方法设置时间
        setTime(hour, minute, second);
    }

    // 设置时间的私有方法
    private void setTime(int hour, int minute, int second) {
        // 格式化时间字符串,保留两位数的小时、分钟和秒钟
        String time = String.format("%02d:%02d:%02d", hour, minute, second);
        // 将格式化后的时间字符串设置为timeLabel的文本内容
        timeLabel.setText(time);
    }

    // 程序入口方法
    public static void main(String[] args) {
        // 创建一个Clock对象,并设置为可见窗口
        Clock clock = new Clock();
        clock.setVisible(true);
    }
}

效果展示

?

显示时间?

?

?设置时间

贴心提示

本程序为某苦逼大学生赶时间淦出来应付课设的,所以功能并不完善,其中的设置时间功能使用后没有跳出监视器功能,慎用

?

文章来源:https://blog.csdn.net/m0_74281884/article/details/135053610
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。