Java實現桌面日歷
本文實例為大傢分享瞭Java實現桌面日歷的具體代碼,供大傢參考,具體內容如下
問題描述:
編寫一個程序,有一個窗口,該窗口為BorderLayout佈局。窗口的中心添加一個Panel容器:pCenter,pCenter的佈局是7行7列的GridLayout佈局,pCenter的中放置49個標簽,用來顯示日歷。窗口北面添加一個Panel容器pNorth,其佈局是FlowLayout佈局,pNorth放置兩個按鈕:nextMonth和previousMonth按鈕,單擊nextMonth,可以顯示當前月的下一個月的日歷;單擊previousMonth按鈕,可以顯示當前月的上一個月的日歷。窗口的南面添加一個Panel容器pSouth,其佈局是FlowLayout佈局,pSouth中放置一個標簽用來顯示一些信息。請完成界面設計和相關功能。運行結果如下圖所示。
問題解決:
新建Java項目,在項目下新建package,命名為Calendar。
CalendarBean.java
package Calendar; import java.util.Calendar; public class CalendarBean { String day[]; int year=2018,month=0; public void setYear(int year) { this.year=year; } public int getYear() { return year; } public void setMonth(int month) { this.month=month; } public int getMonth() { return month; } public String[] getCalendar() { String a[]=new String[42]; Calendar 日歷=Calendar.getInstance(); 日歷.set(year,month-1,1); int 星期幾=日歷.get(Calendar.DAY_OF_WEEK)-1; int day=0; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31; } if(month==4||month==6||month==9||month==11) { day=30; } if(month==2) { if(((year%4==0)&&(year%100!=0))||(year%400==0)) { day=29; } else { day=28; } } for(int i=星期幾,n=1;i<星期幾+day;i++) { a[i]=String.valueOf(n) ; n++; } return a; } }
CalendarFrame.java
package Calendar; import java.util.*; import java.awt.*; import java.awt.event.*; import java.applet.*; public class CalendarFrame extends Frame implements ActionListener { Label labelDay[]=new Label[42]; Button titleName[]=new Button[7]; String name[]={"日","一","二","三", "四","五","六"}; Button nextMonth,previousMonth; int year=2020,month=5; CalendarBean calendar; Label showMessage=new Label("",Label.CENTER); public CalendarFrame() { Panel pCenter=new Panel(); pCenter.setLayout(new GridLayout(7,7)); //將pCenter的佈局設置為7行7列的GridLayout 佈局。 for(int i=0;i<7;i++) { titleName[i]=new Button(name[i]); pCenter.add(titleName[i]);//pCenter添加組件titleName[i]。 } for(int i=0;i<42;i++) { labelDay[i]=new Label("",Label.CENTER); pCenter.add(labelDay[i]);//pCenter添加組件labelDay[i]。 } calendar=new CalendarBean(); calendar.setYear(year); calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); } nextMonth=new Button("下月"); previousMonth=new Button("上月"); nextMonth.addActionListener(this); previousMonth.addActionListener(this); Panel pNorth=new Panel(), pSouth=new Panel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); showMessage.setText("日歷:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" ); ScrollPane scrollPane=new ScrollPane(); scrollPane.add(pCenter); add(scrollPane,BorderLayout.CENTER);// 窗口添加scrollPane在中心區域 add(pNorth,BorderLayout.NORTH);// 窗口添加pNorth 在北面區域 add(pSouth,BorderLayout.SOUTH);// 窗口添加pSouth 在南區域。 } public void actionPerformed(ActionEvent e) { if(e.getSource()==nextMonth) { month=month+1; if(month>12) { month=1; year++; } calendar.setYear(year); calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); } } else if(e.getSource()==previousMonth) { month=month-1; if(month<1) { month=12; year--; } calendar.setYear(year); calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); } } showMessage.setText("日歷:"+calendar.getYear()+"年"+calendar.getMonth()+"月" ); } }
CalendarMainClass.java
package Calendar; public class CalendarMainClass { public static void main(String args[]) { CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.validate(); frame.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } } ); } }
運行結果:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。