⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datebutton.java

📁 个人开发的数字助理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package Default;

import java.util.Date;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Frame;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
// import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JSpinner.NumberEditor;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.border.LineBorder;

public class DateButton extends JButton {

	static  DateChooser	dateChooser	= null;
//	static  DateChooser		dateChooser = new DateChooser();
	private String		preLabel	= "";
//	----------------------------------------------------------------------------------------------------------------------------------------
	public DateButton()
		{
			this(getNowDate());
		}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public DateButton(SimpleDateFormat df, String dateString)
		{
			this();
			setText(df, dateString);
		}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public DateButton(Date date)
		{
			this("", date);
		}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public DateButton(String preLabel, Date date)
		{
			if (preLabel != null) this.preLabel = preLabel;
			setDate(date);
			setBorder(null);
			setCursor(new Cursor(Cursor.HAND_CURSOR));
			super.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (dateChooser == null) dateChooser = new DateChooser();
					Point p = getLocationOnScreen();
					p.y = p.y + 30;
					dateChooser.showDateChooser(p);
				}
			});
		}
//	----------------------------------------------------------------------------------------------------------------------------------------
	private static Date getNowDate() {
		return Calendar.getInstance().getTime();
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public static SimpleDateFormat getDefaultDateFormat() {
		return new SimpleDateFormat("yyyy年MM月dd日 kk时mm分");
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public  String getNowTime()
	{
//		return new SimpleDateFormat("yyyy年MM月dd日 kk时mm分").format(getNowDate());
		return this.getText();
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	// 覆盖父类的方法
	public void setText(String s) {
		Date date;
		try
			{
				date = getDefaultDateFormat().parse(s);
			} catch (ParseException e)
			{
				date = getNowDate();
			}
		setDate(date);
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public void setText(SimpleDateFormat df, String s) {
		Date date;
		try
			{
				date = df.parse(s);
			} catch (ParseException e)
			{
				date = getNowDate();
			}
		setDate(date);
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public void setDate(Date date) {
		super.setText(preLabel + getDefaultDateFormat().format(date));
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	public Date getDate() {
		String dateString = getText().substring(preLabel.length());
		try
			{
				return getDefaultDateFormat().parse(dateString);
			} catch (ParseException e)
			{
				return getNowDate();
			}

	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	// 覆盖父类的方法使之无效
	public void addActionListener(ActionListener listener) {
	}
//	----------------------------------------------------------------------------------------------------------------------------------------
	 class DateChooser extends JPanel implements ActionListener,
			ChangeListener {
		int			startYear			= 1980;				// 默认【最小】显示年份

		int			lastYear			= 2050;				// 默认【最大】显示年份

		int			width				= 300;					// 界面宽度

		int			height				= 200;					// 界面高度

		Color		backGroundColor		= Color.gray;			// 底色
																// 月历表格配色----------------//

		Color		palletTableColor	= Color.white;			// 日历表底色

		Color		todayBackColor		= Color.orange;		// 今天背景色

		Color		weekFontColor		= Color.blue;			// 星期文字色

		Color		dateFontColor		= Color.black;			// 日期文字色

		Color		weekendFontColor	= Color.red;			// 周末文字色

		// 控制条配色------------------//
		Color		controlLineColor	= Color.pink;			// 控制条底色

		Color		controlTextColor	= Color.white;			// 控制条标签文字色

		Color		rbFontColor			= Color.white;			// RoundBox文字色

		Color		rbBorderColor		= Color.red;			// RoundBox边框色

		Color		rbButtonColor		= Color.pink;			// RoundBox按钮色

		Color		rbBtFontColor		= Color.red;			// RoundBox按钮文字色

		JDialog		dialog;

		JSpinner	yearSpin;

		JSpinner	monthSpin;
		JSpinner	daySpin;  
		JSpinner	hourSpin;
		JSpinner	miniteSpin;

		JButton[][]	daysButton			= new JButton[6][7];
//		----------------------------------------------------------------------------------------------------------------------------------------
		DateChooser()
			{

				setLayout(new BorderLayout());
				setBorder(new LineBorder(backGroundColor, 2));
				setBackground(backGroundColor);

				JPanel topYearAndMonth = createYearAndMonthPanal();
				add(topYearAndMonth, BorderLayout.NORTH);
				JPanel centerWeekAndDay = createWeekAndDayPanal();
				add(centerWeekAndDay, BorderLayout.CENTER);

			}
//		----------------------------------------------------------------------------------------------------------------------------------------
		private JPanel createYearAndMonthPanal() {
			Calendar c = getCalendar();
			int currentYear = c.get(Calendar.YEAR);
			int currentMonth = c.get(Calendar.MONTH) + 1;
			int currentDay=c.get(Calendar.DAY_OF_MONTH);
			int currentHour = c.get(Calendar.HOUR_OF_DAY);
			int currentMinite=c.get(Calendar.MINUTE);

			JPanel result = new JPanel();
			result.setLayout(new FlowLayout());
			result.setBackground(controlLineColor);
//------------------------------------------------------------------------------------
			yearSpin = new JSpinner(new SpinnerNumberModel(currentYear,
					startYear, lastYear, 1));
			yearSpin.setPreferredSize(new Dimension(48, 20));
			yearSpin.setName("Year");
			yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
			yearSpin.addChangeListener(this);
			result.add(yearSpin);

			JLabel yearLabel = new JLabel("年");
			yearLabel.setForeground(controlTextColor);
			result.add(yearLabel);
//------------------------------------------------------------------------------------
			monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1,
					12, 1));
			monthSpin.setPreferredSize(new Dimension(35, 20));
			monthSpin.setName("Month");
			monthSpin.addChangeListener(this);
			result.add(monthSpin);

			JLabel monthLabel = new JLabel("月");
			monthLabel.setForeground(controlTextColor);
			result.add(monthLabel);
//			------------------------------------------------------------------------------------
			daySpin = new JSpinner(new SpinnerNumberModel(currentDay, 1,
					31, 1));
			daySpin.setPreferredSize(new Dimension(35, 20));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -