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

📄 jdatepanel.java

📁 jdatepicker是一个swing开发的日期选择组件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}
		return actionListeners;
	}

	/**
	 * Returns a clone of the Calender object holding the date internally
	 * @return Calendar
	 */
	public Calendar getCalendarClone(){
		return getCalenderModel().getCalendarClone();
	}
	
	private GregorianCalendarModel getCalenderModel() {
		if (calendarModel == null) {
			calendarModel = new GregorianCalendarModel();
			calendarModel.addChangeListener(eventHandler);
		}
		return calendarModel;
	}

	/**

	 * This method initializes centerPanel	

	 * 	

	 * @return javax.swing.JPanel	

	 */    
	private javax.swing.JPanel getCenterPanel() {
		if (centerPanel == null) {
			centerPanel = new javax.swing.JPanel();
			centerPanel.setLayout(new java.awt.BorderLayout());
			centerPanel.setOpaque(false);
			centerPanel.add(getDayTableHeader(), java.awt.BorderLayout.NORTH);
			centerPanel.add(getDayTable(), java.awt.BorderLayout.CENTER);
		}
		return centerPanel;
	}
	
	private Vector getChangeListeners(){
		if (changeListeners == null) {
			changeListeners = new Vector();
		}
		return changeListeners;
	}

	/**

	 * This method initializes dayTable	

	 * 	

	 * @return javax.swing.JTable	

	 */    
	private javax.swing.JTable getDayTable() {
		if (dayTable == null) {
			dayTable = new javax.swing.JTable();
			dayTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
			//dayTable.setOpaque(false);
			dayTable.setPreferredSize(new java.awt.Dimension(100,80));
			dayTable.setModel(getCalenderModel());
			dayTable.setShowGrid(true);
			dayTable.setGridColor(Color.WHITE);
			dayTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			dayTable.setCellSelectionEnabled(true);
			dayTable.setRowSelectionAllowed(true);
			dayTable.setFocusable(false);
			dayTable.addMouseListener(getEventHandler());
			TableColumn column = null;
			for (int i = 0; i < 7; i++) {
				column = dayTable.getColumnModel().getColumn(i);
				column.setPreferredWidth(15);
				column.setCellRenderer(getDayTableCellRenderer());
			}
		}
		return dayTable;
	}
	
	private CalendarTableCellRenderer getDayTableCellRenderer() {
		if (dayTableCellRenderer == null) {
			dayTableCellRenderer = new CalendarTableCellRenderer();
		}
		return dayTableCellRenderer;
	}
	
	private JTableHeader getDayTableHeader() {
		if (dayTableHeader == null) {
			dayTableHeader = getDayTable().getTableHeader();
			dayTableHeader.setResizingAllowed(false);
			dayTableHeader.setReorderingAllowed(false);
			dayTableHeader.setDefaultRenderer(getDayTableCellRenderer());
		}
		return dayTableHeader;
	}
	
	private EventHandler getEventHandler() {
		if (eventHandler == null) {
			eventHandler = new EventHandler();
		}
		return eventHandler;
	}

	/**

	 * This method initializes monthLabel	

	 * 	

	 * @return javax.swing.JLabel	

	 */    
	private javax.swing.JLabel getMonthLabel() {
		if (monthLabel == null) {
			monthLabel = new javax.swing.JLabel();
			monthLabel.setForeground(java.awt.SystemColor.activeCaptionText);
			monthLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
			monthLabel.setText("uninitialised");
			monthLabel.addMouseListener(getEventHandler());
			getCalenderModel().addMonthLabel(monthLabel);
		}
		return monthLabel;
	}

	/**

	 * This method initializes monthPopupMenu	

	 * 	

	 * @return javax.swing.JPopupMenu	

	 */    
	private javax.swing.JPopupMenu getMonthPopupMenu() {
		if (monthPopupMenu == null) {
			monthPopupMenu = new javax.swing.JPopupMenu();
			JMenuItem[] menuItems = getMonthPopupMenuItems(); 
			for (int i=0; i<menuItems.length; i++) {
				monthPopupMenu.add(menuItems[i]);
			}
		}
		return monthPopupMenu;
	}
	
	private JMenuItem[] getMonthPopupMenuItems(){
		if (monthPopupMenuItems == null) {
			DateFormatSymbols df = new DateFormatSymbols();
			String[] months = df.getMonths();
			monthPopupMenuItems = new JMenuItem[months.length-1];
			for (int i=0; i<months.length-1; i++) {
				JMenuItem mi = new JMenuItem(months[i]);
				mi.addActionListener(eventHandler);
				monthPopupMenuItems[i] = mi;
			}
		}
		return monthPopupMenuItems;
	}

	/**
	 * This method initializes nextMonthButton	
	 * 	
	 * @return javax.swing.JButton	
	 */    
	private javax.swing.JButton getNextMonthButton() {
		if (nextMonthButton == null) {
			nextMonthButton = new javax.swing.JButton(new JNextIcon(4,7));
			nextMonthButton.setText("");
			nextMonthButton.setPreferredSize(new java.awt.Dimension(20,15));
			nextMonthButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
			nextMonthButton.setFocusable(false);
			nextMonthButton.addActionListener(getEventHandler());
			nextMonthButton.setToolTipText("Next Month");
		}
		return nextMonthButton;
	}

	/**
	 * This method initializes nextYearButton	
	 * 	
	 * @return javax.swing.JButton	
	 */    
	private javax.swing.JButton getNextYearButton() {
		if (nextYearButton == null) {
			nextYearButton = new javax.swing.JButton(new JNextIcon(8,7, true));
			nextYearButton.setText("");
			nextYearButton.setPreferredSize(new java.awt.Dimension(20,15));
			nextYearButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
			nextYearButton.setFocusable(false);
			nextYearButton.addActionListener(getEventHandler());
			nextYearButton.setToolTipText("Next Year");
		}
		return nextYearButton;
	}

	/**

	 * This method initializes northCenterPanel	

	 * 	

	 * @return javax.swing.JPanel	

	 */    
	private javax.swing.JPanel getNorthCenterPanel() {
		if (northCenterPanel == null) {
			northCenterPanel = new javax.swing.JPanel();
			northCenterPanel.setLayout(new java.awt.BorderLayout());
			northCenterPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,5,0,5));
			northCenterPanel.setOpaque(false);
			northCenterPanel.add(getMonthLabel(), java.awt.BorderLayout.CENTER);
			northCenterPanel.add(getYearSpinner(), java.awt.BorderLayout.EAST);
		}
		return northCenterPanel;
	}
	
	/**

	 * This method initializes northPanel	

	 * 	

	 * @return javax.swing.JPanel	

	 */    
	private javax.swing.JPanel getNorthPanel() {
		if (northPanel == null) {
			northPanel = new javax.swing.JPanel();
			northPanel.setLayout(new java.awt.BorderLayout());
			northPanel.setName("");
			northPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(3,3,3,3));
			northPanel.setBackground(java.awt.SystemColor.activeCaption);
			northPanel.add(getPreviousButtonPanel(), java.awt.BorderLayout.WEST);
			northPanel.add(getNextButtonPanel(), java.awt.BorderLayout.EAST);
			northPanel.add(getNorthCenterPanel(), java.awt.BorderLayout.CENTER);
		}
		return northPanel;
	}

	/**
	 * This method initializes previousButtonPanel
	 *
	 * @return javax.swing.JPanel
	 */
	private javax.swing.JPanel getPreviousButtonPanel() {
		if (previousButtonPanel == null) {
			previousButtonPanel = new javax.swing.JPanel();
			java.awt.GridLayout layout = new java.awt.GridLayout(1,2);
			layout.setHgap(3);
			previousButtonPanel.setLayout(layout);
			previousButtonPanel.setName("");
			previousButtonPanel.setBackground(java.awt.SystemColor.activeCaption);
			if (isShowYearButtons()) {
				previousButtonPanel.add(getPreviousYearButton());
			}
			previousButtonPanel.add(getPreviousMonthButton());
		}
		return previousButtonPanel;
	}

	/**
	 * This method initializes nextButtonPanel
	 *
	 * @return javax.swing.JPanel
	 */
	private javax.swing.JPanel getNextButtonPanel() {
		if (nextButtonPanel == null) {
			nextButtonPanel = new javax.swing.JPanel();
			java.awt.GridLayout layout = new java.awt.GridLayout(1,2);
			layout.setHgap(3);
			nextButtonPanel.setLayout(layout);
			nextButtonPanel.setName("");
			nextButtonPanel.setBackground(java.awt.SystemColor.activeCaption);
			nextButtonPanel.add(getNextMonthButton());
			if (isShowYearButtons()) {
				nextButtonPanel.add(getNextYearButton());
			}
		}
		return nextButtonPanel;
	}

	/**
	 * This method initializes previousMonthButton	
	 * 	
	 * @return javax.swing.JButton	
	 */    
	private javax.swing.JButton getPreviousMonthButton() {
		if (previousMonthButton == null) {
			previousMonthButton = new javax.swing.JButton(new JPreviousIcon(4,7));
			previousMonthButton.setText("");
			previousMonthButton.setPreferredSize(new java.awt.Dimension(20,15));
			previousMonthButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
			previousMonthButton.setFocusable(false);
			previousMonthButton.addActionListener(getEventHandler());
			previousMonthButton.setToolTipText("Previous Month");
		}
		return previousMonthButton;
	}
	
	/**
	 * This method initializes previousMonthButton	
	 * 	
	 * @return javax.swing.JButton	
	 */    
	private javax.swing.JButton getPreviousYearButton() {
		if (previousYearButton == null) {
			previousYearButton = new javax.swing.JButton(new JPreviousIcon(8,7, true));
			previousYearButton.setText("");
			previousYearButton.setPreferredSize(new java.awt.Dimension(20,15));
			previousYearButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
			previousYearButton.setFocusable(false);
			previousYearButton.addActionListener(getEventHandler());
			previousYearButton.setToolTipText("Previous Year");
		}
		return previousYearButton;
	}

	/**

	 * This method initializes southPanel	

	 * 	

	 * @return javax.swing.JPanel	

	 */    
	private javax.swing.JPanel getSouthPanel() {
		if (southPanel == null) {
			southPanel = new javax.swing.JPanel();
			southPanel.setLayout(new java.awt.BorderLayout());
			//southPanel.setOpaque(false);
			southPanel.setBackground(Color.WHITE);
			southPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(3,3,3,3));
			southPanel.add(getTodayLabel(), java.awt.BorderLayout.CENTER);
		}
		return southPanel;
	}

	/**

	 * This method initializes todayLabel	

	 * 	

	 * @return javax.swing.JLabel	

	 */    
	private javax.swing.JLabel getTodayLabel() {
		if (todayLabel == null) {
			todayLabel = new javax.swing.JLabel();
			todayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
			todayLabel.setText("uninitialised");
			todayLabel.addMouseListener(getEventHandler());
			getCalenderModel().addTodayLabel(todayLabel);
		}
		return todayLabel;
	}

	/**

	 * This method initializes yearSpinner	

	 * 	

	 * @return javax.swing.JSpinner	

	 */    
	private javax.swing.JSpinner getYearSpinner() {
		if (yearSpinner == null) {
			yearSpinner = new javax.swing.JSpinner();
			yearSpinner.setModel(getCalenderModel());
		}
		return yearSpinner;
	}
	
	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private  void initialize() {
		this.setLayout(new java.awt.BorderLayout());
		this.setSize(200, 160);
		this.setPreferredSize(new java.awt.Dimension(200,160));
		this.setBackground(java.awt.SystemColor.activeCaptionText);
		this.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.black,1));
		this.setOpaque(false);
		this.add(getNorthPanel(), java.awt.BorderLayout.NORTH);
		this.add(getSouthPanel(), java.awt.BorderLayout.SOUTH);
		this.add(getCenterPanel(), java.awt.BorderLayout.CENTER);
	}

	/**
	 * removes the actionListener
	 * @param arg
	 */
	public void removeActionListener(ActionListener arg){
		getActionListeners().remove(arg);
	}

	/**
	 * removes the specified change listener
	 * @param arg
	 */
	public void removeChangeListener(ChangeListener arg){
		getChangeListeners().remove(arg);
	}
	
	/**
	 * Prints out the selectedDate in long format
	 */
	public String toString(){
		DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
		return df.format(calendarModel.getCalendarClone().getTime());
	}

	/**
	 * Set the tool tip text for the Previous Year Button.
	 * @param toolTipText
	 */
	public void setPreviousYearButtonToolTipText(String toolTipText) {
		this.getPreviousYearButton().setToolTipText(toolTipText);
	}

	/**
	 * Gets the tool tip text for the Previous Year Button.
	 * @return the tool tip text for the previous year button
	 */
	public String getPreviousYearButtonToolTipText() {
	       return this.getPreviousYearButton().getToolTipText();
      	}	       

	/**
	 * Set the tool tip text for the Next Year Button.
	 * @param toolTipText
	 */
	public void setNextYearButtonToolTipText(String toolTipText) {
		this.getNextYearButton().setToolTipText(toolTipText);
	}

	/**
	 * Gets the tool tip text for the Next Year Button.
	 * @return the tool tip text for the next year button
	 */
	public String getNextYearButtonToolTipText() {
	       return this.getNextYearButton().getToolTipText();
      	}	       

	/**
	 * Set the tool tip text for the Previous Month Button.
	 * @param toolTipText
	 */
	public void setPreviousMonthButtonToolTipText(String toolTipText) {
		this.getPreviousMonthButton().setToolTipText(toolTipText);
	}

	/**
	 * Gets the tool tip text for the Previous Month Button.
	 * @return the tool tip text for the previous month button
	 */
	public String getPreviousMonthButtonToolTipText() {
	       return this.getPreviousMonthButton().getToolTipText();
      	}	       

	/**
	 * Set the tool tip text for the Next Month Button.
	 * @param toolTipText
	 */
	public void setNextMonthButtonToolTipText(String toolTipText) {
		this.getNextMonthButton().setToolTipText(toolTipText);
	}

	/**
	 * Gets the tool tip text for the Next Month Button.
	 * @return the tool tip text for the next month button
	 */
	public String getNextMonthButtonToolTipText() {
	       return this.getNextMonthButton().getToolTipText();
      	}	       

	/**
	 * Sets the visibilty of the Year navigation buttons
	 * @param showYearButtons
	 */
	public void setShowYearButtons(boolean showYearButtons) {
		this.showYearButtons = showYearButtons;
		if (this.showYearButtons) {
			getNextButtonPanel().add(getNextYearButton());
			getPreviousButtonPanel().removeAll();
			getPreviousButtonPanel().add(getPreviousYearButton());
			getPreviousButtonPanel().add(getPreviousMonthButton());
		} else {
			getNextButtonPanel().remove(getNextYearButton());
			getPreviousButtonPanel().remove(getPreviousYearButton());
		}
	}

	/**
	 * Is the year navigation buttons active
	 * @return visiblity of the year
	 */
	public boolean isShowYearButtons() {
		return this.showYearButtons;
	}

  }  

⌨️ 快捷键说明

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