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

📄 jcalendar.java

📁 精美java 日历类,为GUI日期输入提供方便
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

		YearDown.setBorder(null);
		YearDown.setMaximumSize(new Dimension(16, 16));
		YearDown.setMinimumSize(new Dimension(16, 16));
		YearDown.setPreferredSize(new Dimension(16, 16));
		YearDown.setSize(new Dimension(16, 16));
		YearDown.setText("▼");
		YearDown.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				YearDown_actionPerformed(e);
			}
		});
		YearUp.setBorder(null);
		YearUp.setMaximumSize(new Dimension(16, 16));
		YearUp.setMinimumSize(new Dimension(16, 16));
		YearUp.setPreferredSize(new Dimension(16, 16));
		YearUp.setSize(new Dimension(16, 16));
		YearUp.setText("▲");
		YearUp.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				YearUp_actionPerformed(e);
			}
		});

		jPanelDay.setLayout(new BorderLayout());

		Days.setLayout(new GridLayout(6, 7));
		Days.setBackground(SystemColor.info);

		for (int i = 0; i < 42; i++) {
			days[i] = new JToggleButton();
			days[i].setBorder(null);
			days[i].setBackground(SystemColor.info);
			days[i].setHorizontalAlignment(SwingConstants.CENTER);
			days[i].setHorizontalTextPosition(SwingConstants.CENTER);
			// days[i].setSize(l,l);
			days[i].addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(ActionEvent e) {
					day = Integer.parseInt(((JToggleButton) e.getSource())
							.getText());
					showDate();
					showDays();
				}
			});
			Days.add(days[i]);
		}

		jp.add(Main, BorderLayout.NORTH);
		jp.add(jPanelDay, BorderLayout.CENTER);
		jp.add(jPanelMonth, BorderLayout.SOUTH);

		Main.add(Year, BorderLayout.CENTER);
		Main.add(Out, BorderLayout.WEST);
		Main.add(jPanelButton, BorderLayout.EAST);

		jPanelButton.add(YearUp);
		jPanelButton.add(YearDown);

		jPanelDay.add(weekPanel, BorderLayout.NORTH);
		jPanelDay.add(Days, BorderLayout.CENTER);

		jPanelMonth.add(Month, BorderLayout.CENTER);
		jPanelMonth.add(MonthDown, BorderLayout.WEST);
		jPanelMonth.add(MonthUp, BorderLayout.EAST);

		showMonth();
		showYear();
		showDate();
		showDays();
	}

	// 自定义重画年选择面板
	void jPanelButtonComponentResized(java.awt.event.ComponentEvent evt) {
		YearUp.setLocation(0, 0);
		YearDown.setLocation(0, YearUp.getHeight());
		jPanelButton.setSize(YearUp.getWidth(), YearUp.getHeight() * 2);
		jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(), YearUp
				.getHeight() * 2));
		jPanelButton.updateUI();
	}

	// //测试用
	// public static void main(String[] args){
	// JFrame f=new JFrame();
	// f.setContentPane(new JCalendar());
	// f.pack();
	// //f.setResizable(false);
	// f.show();
	// }

	// 增加年份
	void YearUp_actionPerformed(ActionEvent e) {
		year++;
		showYear();
		showDate();
		showDays();
	}

	// 减少年份
	void YearDown_actionPerformed(ActionEvent e) {
		year--;
		showYear();
		showDate();
		showDays();
	}

	// 减少月份
	void MonthDown_actionPerformed(ActionEvent e) {
		month--;
		if (month < 0) {
			month = 11;
			year--;
			showYear();
		}
		showMonth();
		showDate();
		showDays();
	}

	// 增加月份
	void MonthUp_actionPerformed(ActionEvent e) {
		month++;
		if (month == 12) {
			month = 0;
			year++;
			showYear();
		}
		showMonth();
		showDate();
		showDays();
	}

	// 初始化年月日
	void iniCalender() {
		year = cal.get(java.util.Calendar.YEAR);
		month = cal.get(java.util.Calendar.MONTH);
		day = cal.get(java.util.Calendar.DAY_OF_MONTH);
	}

	// 刷新月份
	void showMonth() {
		Month.setText(Integer.toString(month + 1) + "月");
	}

	// 刷新年份
	void showYear() {
		Year.setText(Integer.toString(year) + "年");
	}

	// 刷新日期
	void showDate() {
		Out.setText(Integer.toString(year) + "-" + Integer.toString(month + 1)
				+ "-" + Integer.toString(day));

	}

	// 刷新日期
	public String showD() {

		String date = null;
		date = Integer.toString(year) + "-";
		if (month + 1 < 10) {
			date = date + "0";
		}
		date = date + Integer.toString(month + 1) + "-";
		if (day < 10) {
			date = date + "0";
		}
		date = date + Integer.toString(day);

		return date;
	}

	// 重画天数选择面板
	void showDays() {
		cal.set(year, month, 1);
		int firstDayOfWeek = cal.get(java.util.Calendar.DAY_OF_WEEK);
		int n = mm[month];
		if (cal.isLeapYear(year) && month == 1)
			n++;
		int i = 0;
		for (; i < firstDayOfWeek - 1; i++) {
			days[i].setEnabled(false);
			days[i].setSelected(false);
			days[i].setText("");
		}
		int d = 1;
		for (; d <= n; d++) {
			days[i].setText(Integer.toString(d));
			days[i].setEnabled(true);
			if (d == day)
				days[i].setSelected(true);
			else
				days[i].setSelected(false);
			;
			i++;
		}
		for (; i < 42; i++) {
			days[i].setEnabled(false);
			days[i].setSelected(false);
			days[i].setText("");
		}
	}

	// 单击年份面板选择整个年份字符串
	void SelectionYear() {
		Year.setSelectionStart(0);
		Year.setSelectionEnd(Year.getText().length());
	}

	// 单击月份面板选择整个月份字符串
	void SelectionMonth() {
		Month.setSelectionStart(0);
		Month.setSelectionEnd(Month.getText().length());
	}

	// 月份面板响应鼠标单击事件
	void Month_mouseClicked(MouseEvent e) {
		// SelectionMonth();
		inputMonth();
	}

	// 检验输入的月份
	void inputMonth() {
		String s;
		if (Month.getText().endsWith("月")) {
			s = Month.getText().substring(0, Month.getText().length() - 1);
		} else
			s = Month.getText();
		month = Integer.parseInt(s) - 1;
		this.showMe();
	}

	// 月份面板键盘敲击事件响应
	void Month_keyPressed(KeyEvent e) {
		if (e.getKeyChar() == 10)
			inputMonth();
	}

	// 年份面板响应鼠标单击事件
	void Year_mouseClicked(MouseEvent e) {
		// SelectionYear();
		inputYear();
	}

	// 年份键盘敲击事件响应
	void Year_keyPressed(KeyEvent e) {
		// System.out.print(new Integer(e.getKeyChar()).byteValue());
		if (e.getKeyChar() == 10)
			inputYear();
	}

	// 检验输入的年份字符串
	void inputYear() {
		String s;
		if (Year.getText().endsWith("年")) {
			s = Year.getText().substring(0, Year.getText().length() - 1);
		} else
			s = Year.getText();
		year = Integer.parseInt(s);
		this.showMe();
	}

	// 以字符串形式返回日期,yyyy-mm-dd
	public String getDate() {
		return Out.getText();
	}

	// 以字符串形式输入日期,yyyy-mm-dd
	public void setDate(String date) {
		if (date != null) {
			StringTokenizer f = new StringTokenizer(date, "-");
			if (f.hasMoreTokens())
				year = Integer.parseInt(f.nextToken());
			if (f.hasMoreTokens())
				month = Integer.parseInt(f.nextToken());
			if (f.hasMoreTokens())
				day = Integer.parseInt(f.nextToken());
			cal.set(year, month, day);
		}
		this.showMe();
	}

	// 以日期对象形式输入日期
	public void setTime(Date date) {
		cal.setTime(date);
		this.iniCalender();
		this.showMe();
	}

	// 返回日期对象
	public Date getTime() {
		return cal.getTime();
	}

	// 返回当前的日
	public int getDay() {
		return day;
	}

	// 设置当前的日
	public void setDay(int day) {
		this.day = day;
		cal.set(this.year, this.month, this.day);
		this.showMe();
	}

	// 设置当前的年
	public void setYear(int year) {
		this.year = year;
		cal.set(this.year, this.month, this.day);
		this.showMe();
	}

	// 返回当前的年
	public int getYear() {
		return year;
	}

	// 返回当前的月
	public int getMonth() {
		return month;
	}

	// 设置当前的月
	public void setMonth(int month) {
		this.month = month;
		cal.set(this.year, this.month, this.day);
		this.showMe();
	}

	// 刷新
	public void showMe() {
		this.showDays();
		this.showMonth();
		this.showYear();
		this.showDate();
	}

	// 确定选中事件
	private void OkButtonActionPerformed(java.awt.event.ActionEvent evt) {
		Fdate = showD();
		this.setFdate(Fdate);

//		if (jtf != null) {
//			if (jtf == pf.finisheddateField) {
//				pf.finisheddateField.setText(Fdate);
//			} else if (jtf == bf.jTextFieldTime) {
//				bf.jTextFieldTime.setText(Fdate);
//			} else if (jtf == sf.jTextFieldTime) {
//				sf.jTextFieldTime.setText(Fdate);
//			} else if (jtf == hf.jTextFieldTime) {
//				hf.jTextFieldTime.setText(Fdate);
//			}
//		}

		this.dispose();
	}

	// 关闭窗口事件
	protected void processWindowEvent(WindowEvent e) {
		// super.processWindowEvent(e);
		if (e.getID() == WindowEvent.WINDOW_CLOSING) {
			// OkButtonActionPerformed(null);
			this.setFdate("");
			this.dispose();
		}
	}

	public String doModel() {
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = this.getSize();
		if (frameSize.height > screenSize.height) {
			frameSize.height = screenSize.height;
		}
		if (frameSize.width > screenSize.width) {
			frameSize.width = screenSize.width;
		}
		this.setLocation((screenSize.width - frameSize.width) / 2,
				(screenSize.height - frameSize.height) / 2);
		this.setResizable(false);
		this.setVisible(true);
		// this.pack();

		return this.getFdate();
	}

}

⌨️ 快捷键说明

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