java图形界面的时间控件

JDateChooser是一个模仿Windows日期和时间属性对话框的Java图形界面组件,包含月份、年份选择,日期网格和时间选择。用户可以方便地设置和获取日期及时间,并提供了显示对话框供用户选择日期的静态方法。
摘要由CSDN通过智能技术生成

package kobe.util;

import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.event.*;

/**
 * 日期时间选择对话框,模仿Windows日期和时间属性对话框
 * @see #showDialog(java.awt.Component, String, java.util.Calendar)
 */
public class JDateChooser extends JPanel implements ChangeListener, ItemListener {

  private JComboBox month = new JComboBox(new String[]{"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"});
  private JSpinner year = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1));
  private DateGrid dateGrid = new DateGrid();
  private JSpinner time = new JSpinner(new SpinnerDateModel());

  public JDateChooser(Calendar initialDate) {
    this.setBackground(Color.white);
    this.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
    this.setLayout(new GridLayout(1, 2, 5, 10));
    JPanel p1 = new JPanel();
    p1.setBackground(Color.white);
    p1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("日期"), BorderFactory.createEmptyBorder(5, 5, 10, 5)));
    p1.setLayout(new BorderLayout(10, 10));
    JPanel p11 = new JPanel(new GridLayout(1, 2, 10, 10));
    p11.setBackground(Color.white);
    p11.add(month);
    month.addItemListener(this);
    month.setPreferredSize(new Dimension(0, 20));
    p11.add(year);
    year.setEditor(new JSpinner.NumberEditor(year, "0"));
    year.addChangeListener(this);
    year.setPreferredSize(new Dimension(0, 20));
    p1.add(p11, BorderLayout.NORTH);
    p1.add(dateGrid);
    this.add(p1);
    JPanel p2 = new JPanel(new BorderLayout(10, 10));
    p2.setBackground(Color.white);
    p2.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("时间"), BorderFactory.createEmptyBorder(0, 10, 10, 10)));
    time.setPreferredSize(new Dimension(0, 20));
    JSpinner.DateEditor editor = new JSpinner.DateEditor(time, "HH:mm:ss");
    editor.getTextField().setHorizontalAlignment(JTextField.RIGHT);
    time.setEditor(editor);
    JPanel p = new JPanel();
    p.setBackground(Color.white);
    time.setPreferredSize(new Dimension(100, 20));
    p.add(time);
    p2.add(p, BorderLayout.SOUTH);
    p2.add(new Clock(time));
    this.add(p2);
    setCalendar(initialDate);
    setPreferredSize(new Dimension(369, 200));
  }

  /**
   * 设置日期和时间
   * @param calendar 日期和时间
   */
  public void setCalendar(Calendar calendar) {
    if(calendar==null) calendar = new GregorianCalendar();
    month.setSelectedIndex(calendar.get(Calendar.MONTH));
    year.s

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值