`
zwm512327
  • 浏览: 56678 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JAVA做的简单的日期选择对话框

阅读更多
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)

    在Java编程环境中,日期时间选择对话框是一种常用的用户界面组件,允许用户方便地选择日期和时间。本主题将深入探讨如何实现一个模仿Windows日期和时间属性对话框的自定义组件,以及如何根据需求决定是否显示钟表...

    android 日期时间选择对话框简单实例

    本文将深入探讨如何在Android应用中创建一个简单的日期时间选择对话框,并提供一个适合新手入门的实例。 首先,我们需要了解Android提供的两种内置日期时间选择对话框:DatePickerDialog和TimePickerDialog。这两个...

    java swing 时间日期选择控件

    标签“java日期控件”强调了这个主题关注的是Java中与日期选择相关的控件,不仅仅是Swing,也可能是JavaFX或其他库提供的日期选择组件。但在这里,我们主要讨论的是Swing环境下的实现。 在压缩包的"swing 时间控件...

    android dialog —— 日期和时间选择对话框.zip

    在标题“android dialog —— 日期和时间选择对话框.zip”中提到的,我们将探讨如何在Android应用中创建和使用日期和时间选择对话框。这个压缩包可能包含了一个示例项目或者相关的代码片段,用于演示这一功能。 ...

    android日期对话框源码

    这个源码项目提供了一个简单实现的日期对话框,你可以直接导入工程进行使用,并根据需求进行自定义和修改。接下来,我们将深入探讨Android日期对话框的工作原理、使用方法以及可能的自定义选项。 1. **日期对话框的...

    19. android dialog —— 日期和时间选择对话框

    这时可以先显示日期选择对话框,用户选择日期后,再显示时间选择对话框。在`onDateSet`方法中启动时间选择对话框: ```java // 在dateSetListener的onDateSet方法内 TimePickerDialog timePickerDialog = new ...

    选择日期时间对话框,解决弹出键盘问题

    在Android开发中,选择日期和时间的对话框是常见的用户交互元素,用于让用户方便地选取特定的日期或时间,而无需打开系统日历或时钟应用。本篇将深入探讨如何在Android应用中实现这样的功能,并解决弹出软键盘可能...

    android使用NumberPicker设计的日期时间选择对话框(datepicker)

    在本项目中,`NumberPicker`被巧妙地应用于创建一个自定义的日期时间选择对话框,即`DatePicker`。这个对话框通常用于让用户在应用中选择日期和时间,而无需离开当前界面。 `NumberPicker`的基本使用方法包括设置...

    Java日期选择控件

    【Java日期选择控件】是Java编程中用于用户界面(UI)交互的一种组件,它允许用户方便地选择日期。在Java应用程序或Applet中,日期选择控件常常用于需要输入日期的场景,如填写表单或者设置事件日期等。本文将深入...

    Java中的一个日期选择程序

    1. **Java日期选择器组件**:Java标准库虽然包含了日期和时间处理的功能,但其UI组件并不直观。因此,开发人员常常选择使用第三方库,如`JDatePicker`或`JCalendar`,这些库提供了美观的日期选择器,用户可以轻松...

    Android之日期及时间选择对话框用法实例分析

    在这个布局中,我们有三个主要组件:一个不可编辑的EditText用于显示选择的日期和时间,两个Button分别用于触发日期对话框和时间对话框,以及一个DigitalClock和AnalogClock组件用于显示当前时间。 按钮的点击事件...

    Android日期选择器对话框DatePickerDialog使用详解

    Android 日期选择器对话框 DatePickerDialog 是 Android 平台中一个常用的日期选择器对话框,通过它可以让用户选择日期,并将选择的日期显示在界面上。下面是关于 Android 日期选择器对话框 DatePickerDialog 的详细...

    Java日期选择控件完整源代码

    这篇文档将详细解析"Java日期选择控件完整源代码"的相关知识点,帮助开发者更好地理解和应用这些源码。 首先,我们要知道Java中的日期处理主要依赖于`java.util.Date`类和`java.time`包(自Java 8引入)。在这个源...

    回文判断 JAVA实现

    在Java Swing中,可以使用`JFrame`作为主窗口,`JLabel`显示信息,`JButton`作为用户交互元素,`JOptionPane`用于弹出对话框显示结果。事件监听器(如`ActionListener`)被用来响应用户的操作,如按钮点击。 5. **...

    Java程序 实现 显示当前时间

    总的来说,无论你是使用传统的`java.util.Date`和`SimpleDateFormat`,还是选择Java 8的`java.time`API,都可以轻松地在Java程序中获取并显示当前时间。了解这些基础将有助于你在开发中处理日期和时间相关的功能。

    Android文件对话框的代码例子

    对话框通常用于显示临时信息、请求用户输入或进行一些简单的操作,比如日期选择、时间选择、信息确认以及文件操作等。下面我们将详细探讨如何在Android中实现这些类型的对话框,并通过代码例子来展示具体实现过程。 ...

    ch07 Android 日期与时间对话框

    "ch07 Android 日期与时间对话框"这一主题主要涉及如何在Android应用中实现用户友好的日期和时间选择功能。 在Android中,我们可以使用两种主要的API来显示日期和时间对话框:`DatePickerDialog`和`...

Global site tag (gtag.js) - Google Analytics