private JPanel createYearAndMonthPanal(){
Calendar c = getCalendar() ;
int currentYear =c.get(Calendar.YEAR);
int currentMonth =c.get(Calendar.MONTH)+1;
int currentHour =c.get(Calendar.HOUR_OF_DAY);
JPanel result = new JPanel();
result.setLayout(new FlowLayout());
result.setBackground(controlLineColor);
Point getAppropriateLocation(Frame owner ,Point position ) {
Point result = new Point(position) ;
Point p = owner.getLocation() ;
int offsetX = (position.x+width) - (p.x + owner.getWidth() ) ;
int offsetY = (position.y+height) - (p.y + owner.getHeight() ) ;
if (offsetX >0 ) {
result.x -= offsetX ;
}
if (offsetY >0 ) {
result.y -= offsetY ;
}
return result ;
}
private Calendar getCalendar() {
Calendar result = Calendar.getInstance();
result.setTime(getDate()) ;
return result ;
}
private int getSelectedYear() {
return ((Integer)yearSpin.getValue()).intValue() ;
}
private int getSelectedMonth() {
return ((Integer)monthSpin.getValue()).intValue() ;
}
private int getSelectedHour() {
return ((Integer)hourSpin.getValue()).intValue() ;
}
//选择日期颜色变化
private void dayColorUpdate(boolean isOldDay) {
Calendar c = getCalendar() ;
int day = c.get(Calendar.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH,1);
int actionCommandId =day-2+c.get(Calendar.DAY_OF_WEEK) ;
int i = actionCommandId/7;
int j = actionCommandId%7;
if (isOldDay&&(j==0||j==6)) {
daysButton[i][j].setForeground(weekendFontColor) ;
}
else if( isOldDay)daysButton[i][j].setForeground(dateFontColor) ;
else daysButton[i][j].setForeground(todayBackColor) ;
}
private void flushWeekAndDay() {
Calendar c = getCalendar() ;
c.set(Calendar.DAY_OF_MONTH,1);
int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK) ;
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 7; j++) {
String s="" ;
if (dayNo>=1 && dayNo<=maxDayNo ) s = String.valueOf(dayNo) ;
daysButton[i][j].setText(s) ;
dayNo ++ ;
}
}
dayColorUpdate(false) ;
}
public void stateChanged(ChangeEvent e) {
JSpinner source =(JSpinner)e.getSource() ;
Calendar c = getCalendar() ;
if (source.getName().equals("Hour")) {
c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
setDate(c.getTime());
return ;
}
//覆盖父类的方法使之无效
public void addActionListener(ActionListener listener ) {
}
private class DateChooser extends JPanel implements ActionListener ,ChangeListener {
int startYear = 1000; //默认【最小】显示年份
int lastYear = 3000; //默认【最大】显示年份
int width = 300; //界面宽度
int height = 250; //界面高度
Color backGroundColor = Color.gray; //底色
//月历表格配色----------------//
Color palletTableColor = Color.white; //日历表底色
Color todayBackColor = Color.orange; //今天背景色
Color weekFontColor = Color.blue; //星期文字色
Color dateFontColor = Color.black; //日期文字色
Color weekendFontColor = Color.red; //周末文字色
//控制条配色------------------//
Color controlLineColor = Color.pink; //控制条底色
Color controlTextColor = Color.white; //控制条标签文字色
Color rbFontColor = Color.white; //RoundBox文字色
Color rbBorderColor = Color.red; //RoundBox边框色
Color rbButtonColor = Color.pink; //RoundBox按钮色
Color rbBtFontColor = Color.red; //RoundBox按钮文字色
<SCRIPT language=javascript>
function checkinput()
{
while (isNaN(document.all.years.value) || (document.all.years.value==" "))
{
document.all.years.value=years.value.substring(0,years.value.length-1)
}
}
function numberofdays(month,year)
{
var numdays=new Array(31,28,31,30,31,30,31,31,30,31,30,31)
n=numdays[month]
if (month==1&&year%4==0) ++n
return n
}
function displaydates(day,month,year,shade){
d=new Date(year,month,1)
var startday=d.getDay()
var numdays=numberofdays(month,year)
var numrows=Math.ceil((numdays+startday)/7)
var tmps=""
if((numdays+startday)%7>1) ++numrows
var currentdate=0