//覆盖父类的方法使之无效 public void addActionListener(ActionListener listener ) { }
private class DateChooser extends JPanel implements ActionListener ,ChangeListener { int startYear = 1980; //默认【最小】显示年份 int lastYear = 2050; //默认【最大】显示年份 int width = 200; //界面宽度 int height = 200; //界面高度
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按钮文字色
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) 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 ; }