㈠ 求一个java swing带界面的万年历代码
按照你的要求编写的Java swing 带界面的万年历代码如下
//日历
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.Calendar;
importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
{
JButtonjb1=newJButton("<<");
JButtonjb2=newJButton("<");
JButtonjb3=newJButton(">");
JButtonjb4=newJButton(">>");
JPaneljp1=newJPanel();
JPaneljp2=newJPanel();
JPaneljp3=newJPanel();
JPaneljp4=newJPanel();
JLabeljl1=newJLabel();
JLabeljl2=newJLabel();
JLabel[]jl=newJLabel[49];
String[]week={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
Calendarc=Calendar.getInstance();
intyear,month,day;
intnowyear,nowmonth,nowday;
CCI(){
super("简单日历");
nowyear=c.get(Calendar.YEAR);
nowmonth=c.get(Calendar.MONTH)+1;
nowday=c.get(Calendar.DAY_OF_MONTH);
year=nowyear;
month=nowmonth;
day=nowday;
Strings=year+"年"+month+"月";
jl1.setForeground(Color.RED);
jl1.setFont(newFont(null,Font.BOLD,20));
jl1.setText(s);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jp1.add(jb1);jp1.add(jb2);jp1.add(jl1);jp1.add(jb3);jp1.add(jb4);
jp2.setLayout(null);
createMonthPanel();
jp2.add(jp3);
jl2.setFont(newFont(null,Font.BOLD,20));
jl2.setText("今天是"+nowyear+"年"+nowmonth+"月"+nowday+"日");
jp4.add(jl2);
add(jp1,BorderLayout.NORTH);
add(jp2,BorderLayout.CENTER);
add(jp4,BorderLayout.SOUTH);
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
@Override
publicvoidactionPerformed(ActionEventae){
if(ae.getSource()==jb1){
year=year-1;
Strings=year+"年"+month+"月";
jl1.setText(s);
jp3.removeAll();
createMonthPanel();
jp3.validate();
}
if(ae.getSource()==jb2){
if(month==1){
year=year-1;
month=12;
}else{
month=month-1;
}
Strings=year+"年"+month+"月";
jl1.setText(s);
jp3.removeAll();
createMonthPanel();
jp3.validate();
}
if(ae.getSource()==jb3){
if(month==12){
year=year+1;
month=1;
}else{
month=month+1;
}
Strings=year+"年"+month+"月";
jl1.setText(s);
jp3.removeAll();
createMonthPanel();
jp3.validate();
}
if(ae.getSource()==jb4){
year=year+1;
Strings=year+"年"+month+"月";
jl1.setText(s);
jp3.removeAll();
createMonthPanel();
jp3.validate();
}
}
publicstaticvoidmain(String[]args){
newCCI();
}
publicintgetMonthDays(intyear,intmonth){
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
return31;
case2:
if((year%4==0&&year%100!=0)||year%400==0){
return29;
}else{
return28;
}
default:
return30;
}
}
publicvoidcreateMonthPanel(){
c.set(year,month-1,getMonthDays(year,month));
intweekOfMonth=c.get(Calendar.WEEK_OF_MONTH);
if(weekOfMonth==6){
jp3.setLayout(newGridLayout(7,7));
jp3.setBounds(50,20,420,350);
}else{
jp3.setLayout(newGridLayout(6,7));
jp3.setBounds(50,20,420,300);
}
jp3.setBorder(BorderFactory.createEtchedBorder());
for(inti=0;i<7;i++){
jl[i]=newJLabel(week[i],JLabel.CENTER);
jl[i].setFont(newFont(null,Font.BOLD,20));
jl[i].setBorder(BorderFactory.createEtchedBorder());
jp3.add(jl[i]);
}
c.set(year,month-1,1);
intemptyFirst=c.get(Calendar.DAY_OF_WEEK)-1;
intdaysOfMonth=getMonthDays(year,month);
for(inti=6+emptyFirst;i>=7;i--){
intintyear=year;
intintmonth=month;
if(intmonth==1){
intyear=intyear-1;
intmonth=12;
}else{
intmonth=intmonth-1;
}
intintdays=getMonthDays(intyear,intmonth);
jl[i]=newJLabel((intdays+7-i)+"",JLabel.CENTER);
jl[i].setFont(newFont(null,Font.BOLD,20));
jl[i].setForeground(Color.GRAY);
jl[i].setBorder(BorderFactory.createEtchedBorder());
jp3.add(jl[i]);
}
for(inti=7+emptyFirst;i<daysOfMonth+7+emptyFirst;i++){
jl[i]=newJLabel((i-7-emptyFirst+1)+"",JLabel.CENTER);
jl[i].setFont(newFont(null,Font.BOLD,20));
if((i+1)%7==0||(i+1)%7==1){
jl[i].setForeground(Color.RED);
}elseif((i-7-emptyFirst+1)==nowday&&month==nowmonth&&year==nowyear)
jl[i].setForeground(Color.BLUE);
else
jl[i].setForeground(Color.BLACK);
jl[i].setBorder(BorderFactory.createEtchedBorder());
jp3.add(jl[i]);
}
if(weekOfMonth==6)
for(inti=48;i>=daysOfMonth+emptyFirst+7;i--){
jl[i]=newJLabel((49-i)+"",JLabel.CENTER);
jl[i].setFont(newFont(null,Font.BOLD,20));
jl[i].setForeground(Color.GRAY);
jl[i].setBorder(BorderFactory.createEtchedBorder());
jp3.add(jl[i]);
}
else
for(inti=41;i>=daysOfMonth+emptyFirst+7;i--){
jl[i]=newJLabel((42-i)+"",JLabel.CENTER);
jl[i].setFont(newFont(null,Font.BOLD,20));
jl[i].setForeground(Color.GRAY);
jl[i].setBorder(BorderFactory.createEtchedBorder());
jp3.add(jl[i]);
}
}
}