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

📄 showcalendar.java

📁 accp s1毕业项目 考试管理系统
💻 JAVA
字号:
package com.exam.ui.calendar;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;

import com.exam.ui.SuperFrame;
import com.exam.ui.banzhuren.AddBanJiSchedule;

public class ShowCalendar extends SuperFrame {
	private static final long serialVersionUID = 1L;

	int year;
	int month;
	int date;
	Calendar now = GregorianCalendar.getInstance();
	JTable tblInfo = null;
	JTableHeader tblHeader = null;
	AddBanJiSchedule addBanJiSchedule = null;

	public ShowCalendar(AddBanJiSchedule addBanJiSchedule) {
		try {
			this.addBanJiSchedule = addBanJiSchedule;
			init();
			this.setVisible(true);
			this.setResizable(false);
			this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void init() {
		this.setTitle("日历");
		this.setSize(300, 225);
		this.setCenter();

		Container ct = this.getContentPane();
		JPanel pnlBg = new JPanel();
		ct.add(pnlBg);
		pnlBg.setLayout(null);

		JButton btnPreYear = new JButton("<<");
		btnPreYear.setBounds(50, 10, 20, 25);
		btnPreYear.setMargin(new Insets(0, 0, 0, 0));
		pnlBg.add(btnPreYear);

		final JTextField txtYear = new JTextField();
		txtYear.setBounds(70, 10, 40, 25);
		txtYear.setEditable(false);
		txtYear.setForeground(Color.red);
		pnlBg.add(txtYear);

		JButton btnNextYear = new JButton(">>");
		btnNextYear.setBounds(110, 10, 20, 25);
		btnNextYear.setMargin(new Insets(0, 0, 0, 0));
		pnlBg.add(btnNextYear);

		JLabel lblYear = new JLabel("年");
		lblYear.setBounds(140, 10, 20, 25);
		pnlBg.add(lblYear);

		JButton btnPreMonth = new JButton("<<");
		btnPreMonth.setBounds(160, 10, 20, 25);
		btnPreMonth.setMargin(new Insets(0, 0, 0, 0));
		pnlBg.add(btnPreMonth);

		final JTextField txtMonth = new JTextField();
		txtMonth.setBounds(180, 10, 30, 25);
		txtMonth.setEditable(false);
		txtMonth.setForeground(Color.red);
		pnlBg.add(txtMonth);

		JButton btnNextMonth = new JButton(">>");
		btnNextMonth.setBounds(210, 10, 20, 25);
		btnNextMonth.setMargin(new Insets(0, 0, 0, 0));
		pnlBg.add(btnNextMonth);

		JLabel lblMonth = new JLabel("月");
		lblMonth.setBounds(240, 10, 20, 25);
		pnlBg.add(lblMonth);

		Object[][] cells = new String[6][7];
		Object[] colnames = { "日", "一", "二", "三", "四", "五", "六" };
		tblInfo = new JTable(cells, colnames);
		tblHeader = tblInfo.getTableHeader();
		tblHeader.setReorderingAllowed(false);

		tblHeader.setBounds(20, 50, 250, 20);
		tblInfo.setBounds(20, 70, 250, 96);
		tblInfo.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		tblInfo.setCellSelectionEnabled(false);
		tblInfo.setGridColor(Color.white);
		tblInfo.setDragEnabled(false);
		pnlBg.add(tblHeader);
		pnlBg.add(tblInfo);

		year = now.get(Calendar.YEAR);
		month = now.get(Calendar.MONTH) + 1;
		date = now.get(Calendar.DATE);
		txtYear.setText(" " + year);
		if (month < 10) {
			txtMonth.setText("   " + month);
		} else {
			txtMonth.setText("  " + month);
		}
		show(year, month);

		btnPreYear.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				year = (Integer.parseInt(txtYear.getText().trim()) - 1);
				txtYear.setText(" " + year);
				show(year, month);
			}
		});

		btnNextYear.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				year = (Integer.parseInt(txtYear.getText().trim()) + 1);
				txtYear.setText(" " + year);
				show(year, month);
			}
		});

		btnPreMonth.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				month = (Integer.parseInt(txtMonth.getText().trim()) - 1);
				if (month < 1) {
					month = 12;
					year = year - 1;
				}
				txtYear.setText(" " + year);
				if (month < 10) {
					txtMonth.setText("   " + month);
				} else {
					txtMonth.setText("  " + month);
				}
				show(year, month);
			}
		});

		btnNextMonth.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				month = (Integer.parseInt(txtMonth.getText().trim()) + 1);
				if (month > 12) {
					month = 1;
					year = year + 1;
				}
				txtYear.setText(" " + year);
				if (month < 10) {
					txtMonth.setText("   " + month);
				} else {
					txtMonth.setText("  " + month);
				}
				show(year, month);
			}
		});

		tblInfo.addMouseListener(new MouseListener() {

			public void mouseClicked(MouseEvent arg0) {
				if (arg0.getButton() == MouseEvent.BUTTON1) {
					int y = Integer.parseInt(txtYear.getText().trim());
					int m = Integer.parseInt(txtMonth.getText().trim());
					String value = (String) tblInfo.getValueAt(tblInfo
							.getSelectedRow(), tblInfo.getSelectedColumn());
					int d = Integer.parseInt(value.trim());
					String str = "";
					if (m < 10 && d < 10) {
						str = y + "0" + m + "0" + d;
					} else if (m < 10) {
						str = y + "0" + m + "" + d;
					} else if (d < 10) {
						str = y + m + "0" + d;
					} else {
						str = y + m + d + "";
					}
					addBanJiSchedule.txtBanJiDate.setText(str);
					dispose();
				}
			}

			public void mouseEntered(MouseEvent arg0) {
			}

			public void mouseExited(MouseEvent arg0) {
			}

			public void mousePressed(MouseEvent arg0) {
			}

			public void mouseReleased(MouseEvent arg0) {
			}

		});
	}

	public void show(int year, int month) {
		showClear();
		int count = 0;
		int maxDay = getMaxDay(year, month);
		now.set(year, (month - 1), 1);
		for (int j = 1; j < now.get(Calendar.DAY_OF_WEEK); j++) {
			count++;
		}
		int i = 0;
		for (int day = 1; day <= maxDay; day++) {
			if (date == day) {
				final int x = i;
				final int y = count;
				DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
					private static final long serialVersionUID = 1L;

					public Component getTableCellRendererComponent(
							JTable table, Object value, boolean isSelected,
							boolean hasFocus, int row, int column) {
						if (row == x && column == y) {
							setForeground(Color.red);
						} else {
							setForeground(Color.black);
						}
						return super.getTableCellRendererComponent(table,
								value, isSelected, hasFocus, row, column);
					}
				};
				for (int j = 0; j < 7; j++) {
					tblInfo.getColumnModel().getColumn(j).setCellRenderer(tcr);
				}
			}
			if (day < 10) {
				tblInfo.setValueAt("     " + day, i, count);
			} else {
				tblInfo.setValueAt("   " + day, i, count);
			}
			count++;
			if (count % 7 == 0) {
				i++;
				count = 0;
			}
		}
	}

	public int getMaxDay(int year, int month) {
		int maxDay = 0;
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			maxDay = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			maxDay = 30;
			break;
		case 2:
			if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
				maxDay = 29;
			} else {
				maxDay = 28;
			}
		}
		return maxDay;
	}

	public void showClear() {
		for (int i = 0; i < 6; i++) {
			for (int j = 0; j < 7; j++) {
				tblInfo.setValueAt("", i, j);
			}
		}
	}
}

⌨️ 快捷键说明

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