共計 3773 個字符,預計需要花費 10 分鐘才能閱讀完成。
本篇內容介紹了“Java 如何實現桌面日歷”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
問題描述:
編寫一個程序,有一個窗口,該窗口為 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 i++)
{
titleName[i]=new Button(name[i]);
pCenter.add(titleName[i]);//pCenter 添加組件 titleName[i]。 }
for(int i=0;i 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 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 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 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);
}
}
);
}
}
運行結果:
“Java 如何實現桌面日歷”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!