用了一个下午的时间,来写了个日历的简单程序,算是比较高兴啦。不过还是有些calendar的函数不太理解,不过上网查阅了一些calendar函数用法,关键就是calendar是个抽象类,用法要用getinstance来声明,还有set和get的用法。不过理解好这几个基本函数的用法后,来写这个程序还不是太难。
这是我的第一篇博客,希望以后自己能够写更多的博客出来,我希望能学到更多,也希望分享一下自己的成长经历。
附上代码:
package test11;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
class calendarbb{
String [] day;
int year=2014,month=11;
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 r=Calendar.getInstance();
r.set(year, month-1,-1);//-1可以递推到下一月的第一天
int weekday=r.get(Calendar.DAY_OF_WEEK);
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=weekday,n=1;i<weekday+day;i++)
{
a[i] = String.valueOf(n);
n++;
}
return a;
}
}
class CalendarFrame extends JFrame implements ActionListener{
JLabel labelday[]=new JLabel[42];
JButton titleButton[]=new JButton[7];
String title[]={"一","二","三","四","五","六","日"};
JButton nextmonth,previousmonth;
int year=2014,month=11;
calendarbb calendar;
JLabel showmessageJLabel=new JLabel("",JLabel.CENTER);
public CalendarFrame() {
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(7,7));
for(int i=0;i<7;i++)
{
titleButton[i]=new JButton(title[i]);
panel.add(titleButton[i]);
}
for(int i=0;i<42;i++)
{
labelday[i]=new JLabel("",JLabel.CENTER);
panel.add(labelday[i]);
}
calendar=new calendarbb();
calendar.setyear(year);
calendar.setmonth(month);
String []day=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelday[i].setText(day[i]);
}
nextmonth=new JButton("下月");
previousmonth=new JButton("上月");
nextmonth.addActionListener(this);
previousmonth.addActionListener(this);
JPanel norJPanel=new JPanel();
JPanel souPanel=new JPanel();
norJPanel.add(previousmonth);
norJPanel.add(nextmonth);
souPanel.add(showmessageJLabel);
showmessageJLabel.setText("日历:"+calendar.getyear()+"年"+calendar.getmonth()+"月");
add(panel,BorderLayout.CENTER);
add(norJPanel,BorderLayout.NORTH);
add(souPanel,BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==nextmonth)
{
month=month+1;
if(month>12)
month=1;
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;
calendar.setmonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelday[i].setText(day[i]);
}
}
showmessageJLabel.setText("日历:"+calendar.getyear()+"年"+calendar.getmonth()+"月");
}
}
public class calendartest {
public static void main(String[] args)
{
CalendarFrame calendarFrame=new CalendarFrame();
calendarFrame.setTitle("nickming的日历");
calendarFrame.setBounds(300, 200, 500, 300);
calendarFrame.setVisible(true);
calendarFrame.validate();
}
}