JavaSwing 时间控件

介绍

在JavaSwing中,时间控件是一种常见的用户界面元素,用于显示和选择时间。它提供了用于输入和显示时间的图形界面组件,使用户能够方便地选择特定的时间。JavaSwing时间控件可以用于各种类型的应用程序,包括日历、计划、时钟和预约等。

使用示例

下面是一个简单的示例,展示了如何在JavaSwing中使用时间控件:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TimePickerExample extends JFrame {
    private JLabel label;
    private JButton button;

    public TimePickerExample() {
        setTitle("Time Picker Example");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        label = new JLabel("Selected time: ");
        panel.add(label);

        button = new JButton("Select Time");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String time = showTimePicker();
                label.setText("Selected time: " + time);
            }
        });
        panel.add(button);

        add(panel);
        setVisible(true);
    }

    private String showTimePicker() {
        JSpinner spinner = new JSpinner(new SpinnerDateModel());
        JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "HH:mm:ss");
        spinner.setEditor(editor);
        spinner.setValue(new java.util.Date());

        int result = JOptionPane.showOptionDialog(null, spinner,
                "Select Time", JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.PLAIN_MESSAGE, null, null, null);
        if (result == JOptionPane.OK_OPTION) {
            java.util.Date date = (java.util.Date) spinner.getValue();
            return date.toString();
        }

        return "";
    }

    public static void main(String[] args) {
        new TimePickerExample();
    }
}

代码解析

上述示例中的代码使用了JavaSwing的各种组件和类,实现了一个简单的时间选择器。下面对代码进行解析:

首先,创建一个继承自JFrame的类TimePickerExample,用于显示时间选择器的窗口。

public class TimePickerExample extends JFrame {
    //...
}

在类的构造函数中,设置窗口的标题、大小和关闭方式,并创建一个JPanel,用于放置其他的组件。

public TimePickerExample() {
        setTitle("Time Picker Example");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        //...
}

接下来,创建一个JLabel组件,用于显示选择的时间,并将其添加到面板中。

label = new JLabel("Selected time: ");
panel.add(label);

再创建一个JButton组件,用于触发时间选择器的显示,并添加一个监听器,在用户选择时间后更新显示的时间标签。

button = new JButton("Select Time");
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        String time = showTimePicker();
        label.setText("Selected time: " + time);
    }
});
panel.add(button);

然后,将面板添加到窗口中,并设置窗口可见。

add(panel);
setVisible(true);

TimePickerExample类中定义了一个私有方法showTimePicker(),用于显示时间选择器对话框,并返回用户选择的时间。

private String showTimePicker() {
    JSpinner spinner = new JSpinner(new SpinnerDateModel());
    JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "HH:mm:ss");
    spinner.setEditor(editor);
    spinner.setValue(new java.util.Date());

    int result = JOptionPane.showOptionDialog(null, spinner,
            "Select Time", JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.PLAIN_MESSAGE, null, null, null);
    if (result == JOptionPane.OK_OPTION) {
        java.util.Date date = (java.util.Date) spinner.getValue();
        return date.toString();
    }

    return "";
}

showTimePicker()方法中,创建了一个JSpinner组件,并设置其编辑器为JSpinner.DateEditor,以显示时间的格式。

JSpinner spinner = new JSpinner(new SpinnerDateModel());
JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "HH:mm:ss");
spinner.setEditor(editor);

然后,设置JSpinner的初始值为当前时间。

spinner.setValue(new java.util.Date());

接下来,使用JOptionPane显示一个选项对话框,其中包含了刚才创建的JSpinner组件。