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

📄 jcalendar.java

📁 这个QQ通信系统项目是我之前发过类似的一个大的整合
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package client;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

/**
 * <p>
 * Title: Swing日历
 * </p>
 * <p>
 * Description: 操作日期
 * </p>
 * 
 * @author duxu2004
 * @version 1.0.1
 */

public class JCalendar extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 165465465465L;

	// 动态表示年月日
	private int year = 0;

	private int month = 0;

	private int day = 0;

	// 主面板
	private JPanel Main = new JPanel();

	// 日面板
	private JPanel jPanelDay = new JPanel();

	// 月面板
	private JPanel jPanelMonth = new JPanel();

	// 年的输入位置
	private JTextField Year = new JTextField();

	// 月的输入位置
	private JTextField Month = new JTextField();

	// 减少月份
	private JButton MonthDown = new JButton();

	// 增加月份
	private JButton MonthUp = new JButton();

	private JPanel jPanelButton = new JPanel();

	// 减少年份
	private JButton YearDown = new JButton();

	// 增加年份
	private JButton YearUp = new JButton();

	// 显示日期的位置
	private JLabel Out = new JLabel();

	// 中国时区,以后可以从这里扩展可以设置时区的功能
	private Locale l = Locale.CHINESE;

	// 主日历
	private GregorianCalendar cal = new GregorianCalendar(l);

	// 星期面板
	private JPanel weekPanel = new JPanel();

	// 天按钮组
	private JToggleButton[] days = new JToggleButton[42];

	// 天面板
	private JPanel Days = new JPanel();

	// 标示
	private JLabel jLabel1 = new JLabel();

	private JLabel jLabel2 = new JLabel();

	private JLabel jLabel3 = new JLabel();

	private JLabel jLabel4 = new JLabel();

	private JLabel jLabel5 = new JLabel();

	private JLabel jLabel6 = new JLabel();

	private JLabel jLabel7 = new JLabel();

	// 当前选择的天数按钮
	// private JToggleButton cur = null;

	// 月份天数数组,用来取得当月有多少天
	// 1 2 3 4 5 6 7 8 9 10 11 12
	private int[] mm = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	private JTextField jTextField;

	private JDialog jDialog;

	// 空日期构造函数
	public JCalendar() {
		try {
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public JCalendar(JTextField jTextField, JDialog jDialog) {
		try {
			this.jTextField = jTextField;
			this.jDialog = jDialog;
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	// 带日期设置的构造函数
	public JCalendar(int year, int month, int day) {
		cal.set(year, month, day);
		try {
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 带日历输入的构造函数
	public JCalendar(GregorianCalendar calendar) {
		cal = calendar;
		try {
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 带日期输入的构造函数
	public JCalendar(Date date) {
		cal.setTime(date);
		try {
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 初始化组件
	private void jbInit() throws Exception {
		// 初始化年、月、日
		iniCalender();

		this.setLayout(new BorderLayout());
		this.setBorder(BorderFactory.createRaisedBevelBorder());
		this.setMaximumSize(new Dimension(200, 200));
		this.setMinimumSize(new Dimension(200, 200));
		this.setPreferredSize(new Dimension(200, 200));

		Main.setLayout(new BorderLayout());
		Main.setBackground(SystemColor.info);
		Main.setBorder(null);

		Out.setBackground(Color.lightGray);
		Out.setHorizontalAlignment(SwingConstants.CENTER);
		Out.setMaximumSize(new Dimension(100, 19));
		Out.setMinimumSize(new Dimension(100, 19));
		Out.setPreferredSize(new Dimension(100, 19));

		Out.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseClicked(java.awt.event.MouseEvent e) {
				String time = Out.getText();
				jTextField.setText(time);
				jDialog.dispose();
			}
		});
		jLabel1.setForeground(Color.red);
		jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel1.setText("日");
		jLabel2.setForeground(Color.blue);
		jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel2.setText("六");
		jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel3.setText("五");
		jLabel4.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel4.setText("四");
		jLabel5.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel5.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel5.setText("三");
		jLabel6.setBorder(null);
		jLabel6.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel6.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel6.setText("二");
		jLabel7.setBackground(Color.lightGray);
		jLabel7.setForeground(Color.black);
		jLabel7.setBorder(null);
		jLabel7.setHorizontalAlignment(SwingConstants.CENTER);
		jLabel7.setHorizontalTextPosition(SwingConstants.CENTER);
		jLabel7.setText("一");

		weekPanel.setBackground(UIManager
				.getColor("InternalFrame.activeTitleGradient"));
		weekPanel.setBorder(BorderFactory.createEtchedBorder());
		weekPanel.setLayout(new GridLayout(1, 7));
		weekPanel.add(jLabel1, null);
		weekPanel.add(jLabel7, null);
		weekPanel.add(jLabel6, null);
		weekPanel.add(jLabel5, null);
		weekPanel.add(jLabel4, null);
		weekPanel.add(jLabel3, null);
		weekPanel.add(jLabel2, null);

		MonthUp.setAlignmentX((float) 0.0);
		MonthUp.setActionMap(null);

		jPanelMonth.setBackground(SystemColor.info);
		jPanelMonth.setLayout(new BorderLayout());
		jPanelMonth.setBorder(BorderFactory.createEtchedBorder());

		Month.setBorder(null);
		Month.setHorizontalAlignment(SwingConstants.CENTER);
		Month.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				Month_mouseClicked(e);
			}
		});
		Month.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				Month_keyPressed(e);
			}
		});

		MonthDown.setBorder(null);
		MonthDown.setText("\u25C4");
		MonthDown.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MonthDown_actionPerformed(e);
			}
		});
		MonthUp.setBorder(null);
		MonthUp.setText("\u25BA");
		MonthUp.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MonthUp_actionPerformed(e);
			}
		});

		jPanelButton.setLayout(null);
		jPanelButton.setBorder(null);
		jPanelButton
				.addComponentListener(new java.awt.event.ComponentAdapter() {
					public void componentResized(
							java.awt.event.ComponentEvent evt) {
						jPanelButtonComponentResized(evt);
					}
				});

		Year.setBorder(BorderFactory.createEtchedBorder());
		Year.setMaximumSize(new Dimension(80, 25));
		Year.setMinimumSize(new Dimension(80, 25));
		Year.setPreferredSize(new Dimension(80, 25));
		Year.setHorizontalAlignment(SwingConstants.CENTER);
		Year.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				Year_mouseClicked(e);
			}
		});
		Year.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				Year_keyPressed(e);
			}
		});

		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));

⌨️ 快捷键说明

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