共计 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 小编将为大家输出更多高质量的实用文章!