📄 calendar.java
字号:
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 + -