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

📄 calendar.java

📁 大家共享愉快, 共享愉快, 共享愉快, 共享愉快,共享愉快
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			dayOne += 7;
		lastDate += dayOne - 1;

		//	for all buttons but the last
		int curDay = 1;
		for (int i = 0; i < m_days.length-2; i++)
		{
			if (i >= dayOne && i <= lastDate)
			{
				if (m_currentDay == curDay)
				{
					m_days[i].setBackground(Color.blue);
					m_days[i].setForeground(Color.yellow);
					m_today = m_days[i];
					m_today.requestFocus();
				}
				else
				{
					m_days[i].setBackground(Color.white);
					m_days[i].setForeground(Color.black);
				}
				m_days[i].setText(String.valueOf(curDay++));
				m_days[i].setReadWrite(true);
			}
			else
			{
				m_days[i].setText("");
				m_days[i].setReadWrite(false);
				m_days[i].setBackground(CompierePLAF.getFieldBackground_Inactive());
			}
		}

		//	Set Hour
		boolean pm = m_current24Hour > 12;
		int index = m_current24Hour;
		if (pm && m_hasAM_PM)
			index -= 12;
		if (index < 0 || index >= fHour.getItemCount())
			index = 0;
		fHour.setSelectedIndex(index);
		//	Set Minute
		int m = m_calendar.get(java.util.Calendar.MINUTE);
		fMinute.setValue(new Integer(m));
		//	Set PM
		cbPM.setSelected(pm);
		//	Set TZ
		TimeZone tz = m_calendar.getTimeZone();
		lTZ.setText(tz.getDisplayName(tz.inDaylightTime(m_calendar.getTime()), TimeZone.SHORT));

		//	Update Calendar
		m_calendar.set(m_currentYear, m_currentMonth-1, m_currentDay, m_current24Hour, m_currentMinute, 0);
		m_calendar.set(java.util.Calendar.MILLISECOND, 0);
	}	//	setCalendar

	/**
	 * 	Set Current Time from UI.
	 * 	- set m_current.. variables
	 */
	private void setTime()
	{
		//	Hour
		int h = fHour.getSelectedIndex();
		m_current24Hour = h;
		if (m_hasAM_PM && cbPM.isSelected())
			m_current24Hour += 12;
		if (m_current24Hour < 0 || m_current24Hour > 23)
			m_current24Hour = 0;

		//	Minute
		Integer ii = (Integer)fMinute.getValue();
		m_currentMinute = ii.intValue();
		if (m_currentMinute < 0 || m_currentMinute > 59)
			m_currentMinute = 0;
	}	//	setTime

	/**
	 *	Return Time stamp
	 *  @return date and time
	 */
	public Timestamp getTimestamp()
	{
	//	log.config( "Calendar.getTimeStamp");
		//	Set Calendar
		m_calendar.set(m_currentYear, m_currentMonth-1, m_currentDay, m_current24Hour, m_currentMinute, 0);
		m_calendar.set(java.util.Calendar.MILLISECOND, 0);

		//	Return value
		if (m_abort || m_cancel)
			return null;
		long time = m_calendar.getTimeInMillis();
		if (m_displayType == DisplayType.Date)
			time = new java.sql.Date(time).getTime();
		else if (m_displayType == DisplayType.Time)
			time = new Time(time).getTime();	//	based on 1970-01-01
		return new Timestamp(time);
	}	//	getTimestamp

	/**
	 * 	Cancel button pressed
	 *	@return true if canceled
	 */
	public boolean isCancel()
	{
		return m_cancel;
	}	//	isCancel
	
	/**************************************************************************
	 *	Action Listener for Month/Year combo & dat buttons.
	 *	- Double clicking on a date closes it
	 *  - set m_current...
	 *  @param e Event
	 */
	public void actionPerformed (ActionEvent e)
	{
		if (m_setting)
			return;
	//	log.config( "Calendar.actionPerformed");
		setTime();

		if (e.getSource() == bOK)
		{
			m_abort = false;
			dispose();
			return;
		}
		else if (e.getSource() == bBack)
		{
			if (--m_currentMonth < 1)
			{
				m_currentMonth = 12;
				m_currentYear--;
			}
			m_lastDay = -1;
		}
		else if (e.getSource() == bNext)
		{
			if (++m_currentMonth > 12)
			{
				m_currentMonth = 1;
				m_currentYear++;
			}
			m_lastDay = -1;
		}
		else if (e.getSource() instanceof JButton)
		{
			JButton b = (JButton)e.getSource();
			String text = b.getText();
			//	Today - Set to today's date
			if (text.equals("*"))
			{
				m_calendar.setTime(new Timestamp(System.currentTimeMillis()));
				m_currentDay = m_calendar.get(java.util.Calendar.DATE);
				m_currentMonth = m_calendar.get(java.util.Calendar.MONTH) + 1;
				m_currentYear = m_calendar.get(java.util.Calendar.YEAR);
			}
			//	Cancel
			else if (text.equals("x"))
			{
				m_cancel = true;
				dispose();
				return;
			}
			//	we have a day
			else if (text.length() > 0)
			{
				m_currentDay = Integer.parseInt(text);
				long currentClick = System.currentTimeMillis();
				if (m_currentDay == m_lastDay
					&& currentClick-m_lastClick < 1000)		//  double click 1 second
				{
					m_abort = false;
					dispose();
					return;
				}
				m_lastClick = currentClick;
				m_lastDay = m_currentDay;
			}
		}
		else if (e.getSource() == cbPM)
		{
			setTime();
			m_lastDay = -1;
		}
		else
		{
			//	Set Month
			m_currentMonth = cMonth.getSelectedIndex()+1;
			m_lastDay = -1;
		}
		setCalendar();
	}	//	actionPerformed

	/**
	 *  ChangeListener (Year/Minute Spinner)
	 *  @param e Event
	 */
	public void stateChanged(ChangeEvent e)
	{
		if (m_setting)
			return;

		//	Set Minute
		if (e.getSource() == fMinute)
		{
			setTime();
			return;
		}
		//	Set Year
		m_currentYear = ((Integer)cYear.getValue()).intValue();
		m_lastDay = -1;
		setCalendar();
	}   //  stateChanged

	
	/**************************************************************************
	 *  Mouse Clicked
	 *  @param e Evant
	 */
	public void mouseClicked(MouseEvent e)
	{
		if (e.getClickCount() == 2)
		{
			m_abort = false;
			dispose();
		}
	}   //  mouseClicked

	public void mousePressed(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}

	
	/**************************************************************************
	 * 	Key Released - Return on enter
	 *  @param e event
	 */
	public void keyReleased(KeyEvent e)
	{
	//	System.out.println("Released " + e);
		//	Day Buttons
		if (e.getSource() instanceof JButton)
		{
			if (e.getKeyCode() == KeyEvent.VK_PAGE_DOWN)
			{
				if (++m_currentMonth > 12)
				{
					 m_currentMonth = 1;
					 m_currentYear++;
				}
				setCalendar();
				return;
			}
			if (e.getKeyCode() == KeyEvent.VK_PAGE_UP)
			{
				if (--m_currentMonth < 1)
				{
					 m_currentMonth = 12;
					 m_currentYear--;
				}
				setCalendar();
				return;
			}

			//	Arrows
			int offset = 0;
			if (e.getKeyCode() == KeyEvent.VK_RIGHT)
				offset = 1;
			else if (e.getKeyCode() == KeyEvent.VK_LEFT)
				offset = -1;
			else if (e.getKeyCode() == KeyEvent.VK_UP)
				offset = -7;
			else if (e.getKeyCode() == KeyEvent.VK_DOWN)
				offset = 7;
			if (offset != 0)
			{
				System.out.println(m_calendar.getTime() + "  offset=" + offset);
				m_calendar.add(java.util.Calendar.DAY_OF_YEAR, offset);
				System.out.println(m_calendar.getTime());

				m_currentDay = m_calendar.get(java.util.Calendar.DAY_OF_MONTH);
				m_currentMonth = m_calendar.get(java.util.Calendar.MONTH) + 1;
				m_currentYear = m_calendar.get(java.util.Calendar.YEAR);
				setCalendar();
				return;
			}
			//	something else
			actionPerformed(new ActionEvent(e.getSource(), ActionEvent.ACTION_PERFORMED, ""));
		}

		//	Pressed Enter anywhere
		if (e.getKeyCode() == KeyEvent.VK_ENTER)
		{
			m_abort = false;
			setTime();
			dispose();
			return;
		}

		//	Modified Hour/Miinute
		setTime();
		m_lastDay = -1;
	}	//	keyReleased

	public void keyTyped(KeyEvent e)
	{
	//	System.out.println("Typed " + e);
	}
	public void keyPressed(KeyEvent e)
	{
	//	System.out.println("Pressed " + e);
	}

}	//	Calendar

/**
 *	Minute Spinner Model.
 *  Based on Number Model - uses snap size to determine next value.
 *  Allows to manually set any ninute, but return even snap value
 *  when spinner buttons are used.
 *
 * 	@author 	Jorg Janke
 * 	@version 	$Id: Calendar.java,v 1.18 2005/12/27 06:18:36 jjanke Exp $
 */
class MinuteModel extends SpinnerNumberModel
{
	/**
	 *  Constructor.
	 *  Creates Integer Spinner with minimum=0, maximum=59, stepsize=1
	 *  @param snapSize snap size
	 */
	public MinuteModel(int snapSize)
	{
		super(0,0,59, 1);	//	Integer Model
		m_snapSize = snapSize;
	}	//	MinuteModel

	/**	Snap size			*/
	private int		m_snapSize;

	/**
	 * 	Return next full snap value
	 *  @return next snap value
	 */
	public Object getNextValue()
	{
		int minutes = ((Integer)getValue()).intValue();
		minutes += m_snapSize;
		if (minutes >= 60)
			minutes -= 60;
		//
		int steps = minutes / m_snapSize;
		return new Integer(steps * m_snapSize);
	}	//	getNextValue


	/**
	 * 	Return previous full step value
	 *  @return previous snap value
	 */
	public Object getPreviousValue()
	{
		int minutes = ((Integer)getValue()).intValue();
		minutes -= m_snapSize;
		if (minutes < 0)
			minutes += 60;
		//
		int steps = minutes / m_snapSize;
		if (minutes % m_snapSize != 0)
			steps++;
		if (steps * m_snapSize > 59)
			steps = 0;
		return new Integer(steps * m_snapSize);
	}	//	getNextValue

}	//	MinuteModel

⌨️ 快捷键说明

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