package gui;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import java.util.*;
public class DateUI extends MouseAdapter {
JDialog jf = new JDialog();
JPanel jp = new JPanel();
JComboBox yearBox = new JComboBox();
JComboBox monthBox = new JComboBox();
JButton[][] buttons = new JButton[7][7];
String[] weeks = { "日", "一", "二", "三", "四", "五", "六" };
Calendar cd = Calendar.getInstance();
int curX = -1;
int curY = -1;
JTextField dateText;
public DateUI(JTextField dateText) {
this.dateText = dateText;
jf.setLocationRelativeTo(dateText);
jf.getContentPane().add(jp);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jp.setBorder(BorderFactory.createTitledBorder("日期"));
jp.setLayout(new BorderLayout());
JPanel northPanel = new JPanel(new GridLayout(1, 0,0,0));
for (int i = 2000; i < 2100; i++) {
yearBox.addItem(i + "年");
}
yearBox.setSelectedItem("2009年");
for (int i = 1; i <= 12; i++) {
monthBox.addItem(i + "月");
}
northPanel.add(yearBox);
northPanel.add(monthBox);
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new GridLayout(7, 7));
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (i == 0) {
buttons[i][j] = new JButton(weeks[j]);
buttons[i][j].setEnabled(false);
buttons[i][j].setBackground(Color.green);
} else {
buttons[i][j] = new JButton("");
buttons[i][j].setBackground(Color.white);
buttons[i][j].addMouseListener(this);
}
if (j == 0) {
buttons[i][j].setForeground(Color.red);
}
centerPanel.add(buttons[i][j]);
}
}
setDate();
yearBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == 2) {
return;
}
String yy = e.getItem().toString();
int yi = Integer.parseInt(yy.substring(0, yy.length() - 1));
cd.set(Calendar.YEAR, yi);
setDate();
}
});
monthBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == 2) {
return;
}
String yy = e.getItem().toString();
int yi = Integer.parseInt(yy.substring(0, yy.length() - 1));
cd.set(Calendar.MONTH, yi - 1);
setDate();
}
});
jp.add(northPanel, BorderLayout.NORTH);
jp.add(centerPanel, BorderLayout.CENTER);
jf.setSize(370,220);
jf.setVisible(true);
}
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 1) {
buttons[curX][curY].setBackground(Color.white);
for (int i = 1; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (buttons[i][j].getText().equals("")) {
continue;
}
if (buttons[i][j].equals(e.getSource())) {
curX = i;
curY = j;
buttons[curX][curY].setBackground(Color.MAGENTA);
}
}
}
} else {
String ds=yearBox.getSelectedItem().toString()
+ monthBox.getSelectedItem().toString()
+ buttons[curX][curY].getText();
ds=ds.replaceAll("年|月", "-");
dateText.setText(ds);
jf.dispose();
}
}
public void setDate() {
for (int i = 1; i < 7; i++) {
for (int j = 0; j < 7; j++) {
buttons[i][j].setText("");
buttons[i][j].setBackground(Color.white);
buttons[i][j].setEnabled(false);
}
}
int year = cd.get(Calendar.YEAR);
int month = cd.get(Calendar.MONTH) + 1;
int day = cd.get(Calendar.DAY_OF_MONTH);
curX = cd.get(Calendar.WEEK_OF_MONTH);
curY = cd.get(Calendar.DAY_OF_WEEK) - 1;
buttons[curX][curY].setBackground(Color.MAGENTA);
yearBox.setSelectedItem(year + "年");
monthBox.setSelectedItem(month + "月");
cd.set(Calendar.DAY_OF_MONTH, 1);
int week = cd.get(Calendar.DAY_OF_WEEK);
int maxDay = cd.getActualMaximum(Calendar.DAY_OF_MONTH);
int k = 0;
int dm = 1;
for (int i = 1; i < 7; i++) {
for (int j = 0; j < 7; j++) {
k++;
if (k >= week && k < maxDay + week) {
buttons[i][j].setText(dm++ + "");
buttons[i][j].setEnabled(true);
}
}
}
cd.set(Calendar.DAY_OF_MONTH, day);
}
public static void main(String[] args) {
//传入文本框参数,双击时可把日期填入文本框
new DateUI(new JTextField());
}
}
分享到:
相关推荐
在Android开发中,日期选择对话框(DatePickerDialog)是一个常用组件,它允许用户在弹出的对话框中选择日期,提供了良好的用户体验。本教程将详细讲解如何创建和使用日期选择对话框,以及与之相关的Android编程知识...
在Java编程环境中,日期时间选择对话框是一种常用的用户界面组件,允许用户方便地选择日期和时间。本主题将深入探讨如何实现一个模仿Windows日期和时间属性对话框的自定义组件,以及如何根据需求决定是否显示钟表...
本文将深入探讨如何在Android应用中创建一个简单的日期时间选择对话框,并提供一个适合新手入门的实例。 首先,我们需要了解Android提供的两种内置日期时间选择对话框:DatePickerDialog和TimePickerDialog。这两个...
标签“java日期控件”强调了这个主题关注的是Java中与日期选择相关的控件,不仅仅是Swing,也可能是JavaFX或其他库提供的日期选择组件。但在这里,我们主要讨论的是Swing环境下的实现。 在压缩包的"swing 时间控件...
在标题“android dialog —— 日期和时间选择对话框.zip”中提到的,我们将探讨如何在Android应用中创建和使用日期和时间选择对话框。这个压缩包可能包含了一个示例项目或者相关的代码片段,用于演示这一功能。 ...
这个源码项目提供了一个简单实现的日期对话框,你可以直接导入工程进行使用,并根据需求进行自定义和修改。接下来,我们将深入探讨Android日期对话框的工作原理、使用方法以及可能的自定义选项。 1. **日期对话框的...
这时可以先显示日期选择对话框,用户选择日期后,再显示时间选择对话框。在`onDateSet`方法中启动时间选择对话框: ```java // 在dateSetListener的onDateSet方法内 TimePickerDialog timePickerDialog = new ...
在Android开发中,选择日期和时间的对话框是常见的用户交互元素,用于让用户方便地选取特定的日期或时间,而无需打开系统日历或时钟应用。本篇将深入探讨如何在Android应用中实现这样的功能,并解决弹出软键盘可能...
在本项目中,`NumberPicker`被巧妙地应用于创建一个自定义的日期时间选择对话框,即`DatePicker`。这个对话框通常用于让用户在应用中选择日期和时间,而无需离开当前界面。 `NumberPicker`的基本使用方法包括设置...
【Java日期选择控件】是Java编程中用于用户界面(UI)交互的一种组件,它允许用户方便地选择日期。在Java应用程序或Applet中,日期选择控件常常用于需要输入日期的场景,如填写表单或者设置事件日期等。本文将深入...
1. **Java日期选择器组件**:Java标准库虽然包含了日期和时间处理的功能,但其UI组件并不直观。因此,开发人员常常选择使用第三方库,如`JDatePicker`或`JCalendar`,这些库提供了美观的日期选择器,用户可以轻松...
在这个布局中,我们有三个主要组件:一个不可编辑的EditText用于显示选择的日期和时间,两个Button分别用于触发日期对话框和时间对话框,以及一个DigitalClock和AnalogClock组件用于显示当前时间。 按钮的点击事件...
Android 日期选择器对话框 DatePickerDialog 是 Android 平台中一个常用的日期选择器对话框,通过它可以让用户选择日期,并将选择的日期显示在界面上。下面是关于 Android 日期选择器对话框 DatePickerDialog 的详细...
这篇文档将详细解析"Java日期选择控件完整源代码"的相关知识点,帮助开发者更好地理解和应用这些源码。 首先,我们要知道Java中的日期处理主要依赖于`java.util.Date`类和`java.time`包(自Java 8引入)。在这个源...
在Java Swing中,可以使用`JFrame`作为主窗口,`JLabel`显示信息,`JButton`作为用户交互元素,`JOptionPane`用于弹出对话框显示结果。事件监听器(如`ActionListener`)被用来响应用户的操作,如按钮点击。 5. **...
总的来说,无论你是使用传统的`java.util.Date`和`SimpleDateFormat`,还是选择Java 8的`java.time`API,都可以轻松地在Java程序中获取并显示当前时间。了解这些基础将有助于你在开发中处理日期和时间相关的功能。
对话框通常用于显示临时信息、请求用户输入或进行一些简单的操作,比如日期选择、时间选择、信息确认以及文件操作等。下面我们将详细探讨如何在Android中实现这些类型的对话框,并通过代码例子来展示具体实现过程。 ...
"ch07 Android 日期与时间对话框"这一主题主要涉及如何在Android应用中实现用户友好的日期和时间选择功能。 在Android中,我们可以使用两种主要的API来显示日期和时间对话框:`DatePickerDialog`和`...