我就想用图形用户界面显示
可是不会,可不可以帮下忙
应该怎么做,效果想很系统的那个差不多public class WanNianLi {
int year;//查找的年份
int month;//查找的月份
//计算所需查找月份距离1990年一月的天数,得到所需查找月份的一号是礼拜几
static public void Days(int _year,int _month) {
int days=0;//所需查找月份距离1990年一月的总天数天数
int beforeDays=0;//所需查找年份距离1990年一月的天数
int monthDays=0;//所需查找月份当月的天数
int week=0;//所需查找月份的一号是礼拜几 //计算得到所需查找年份距离1990年一月的天数
switch((_year-1990)%4)
{
case 0: {beforeDays=(_year-1990)/4*1461;break;}
case 1: {beforeDays=(_year-1990)/4*1461+365;break;}
case 2: {beforeDays=(_year-1990)/4*1461+730;break;}
case 3: {beforeDays=(_year-1990)/4*1461+1096;break;}
} //计算得到所需查找月份距离1990年一月的天数与所需查找月份当月的天数
switch(_month)
{
case 1: {days=0;monthDays=31;break;}
case 2: {days=31;monthDays=28;break;}
case 3: {days=31+28;monthDays=31;break;}
case 4: {days=31+28+31;monthDays=30;break;}
case 5: {days=31+28+31+30;monthDays=31;break;}
case 6: {days=31+28+31+30+31;monthDays=30;break;}
case 7: {days=31+28+31+30+31+30;monthDays=31;break;}
case 8: {days=31+28+31+30+31+30+31;monthDays=31;break;}
case 9: {days=31+28+31+30+31+30+31+31;monthDays=30;break;}
case 10: {days=31+28+31+30+31+30+31+31+30;monthDays=31;break;}
case 11: {days=31+28+31+30+31+30+31+31+30+31;monthDays=30;break;}
case 12: {days=31+28+31+30+31+30+31+31+30+31+30;monthDays=31;break;}
} //判断查找年份是否闰年
if((_year%4==0&&_year%100!=0)||(_year%400==0))
{
if(_month>2)days=days+1;//如果闰年且月份大于二月,总天数+1
if(_month==2)monthDays=monthDays+1;//如果闰年且月份等于二月,当月天数+1
}
days=days+beforeDays;//计算总天数
week=days%7;//计算所需查找月份的一号是礼拜几
getInfo(monthDays,week);//输出万年历
}
//输出万年历
static public void getInfo(int monthDays,int week) {
int a[]=new int[31];//月份的天数,初始化都有31天
int j=0;//判断换行(一周七天)
for(int i=0;i<31;i++) a[i]=i+1;//初始化月份
System.out.println(" 日 一 二 三 四 五 六");
if(week!=6) for(j=0;j<=week;j++) System.out.print(" ");//如果所需查找月份的一号不是礼拜天,就空出空位
for(int k=0;k<monthDays;k++)//开始输出日期
{
if(k<9)
System.out.print(" "+a[k]);
else if(k<monthDays)
System.out.print(" "+a[k]);
j++;
if(j==7)
{
System.out.println("");
j=0;
}
}
}
public static void main(String x[]){
int year=2011,month=1;//-----------------这里是改变查找条件的地方!!!!
Days(year,month);
}
}
可是不会,可不可以帮下忙
应该怎么做,效果想很系统的那个差不多public class WanNianLi {
int year;//查找的年份
int month;//查找的月份
//计算所需查找月份距离1990年一月的天数,得到所需查找月份的一号是礼拜几
static public void Days(int _year,int _month) {
int days=0;//所需查找月份距离1990年一月的总天数天数
int beforeDays=0;//所需查找年份距离1990年一月的天数
int monthDays=0;//所需查找月份当月的天数
int week=0;//所需查找月份的一号是礼拜几 //计算得到所需查找年份距离1990年一月的天数
switch((_year-1990)%4)
{
case 0: {beforeDays=(_year-1990)/4*1461;break;}
case 1: {beforeDays=(_year-1990)/4*1461+365;break;}
case 2: {beforeDays=(_year-1990)/4*1461+730;break;}
case 3: {beforeDays=(_year-1990)/4*1461+1096;break;}
} //计算得到所需查找月份距离1990年一月的天数与所需查找月份当月的天数
switch(_month)
{
case 1: {days=0;monthDays=31;break;}
case 2: {days=31;monthDays=28;break;}
case 3: {days=31+28;monthDays=31;break;}
case 4: {days=31+28+31;monthDays=30;break;}
case 5: {days=31+28+31+30;monthDays=31;break;}
case 6: {days=31+28+31+30+31;monthDays=30;break;}
case 7: {days=31+28+31+30+31+30;monthDays=31;break;}
case 8: {days=31+28+31+30+31+30+31;monthDays=31;break;}
case 9: {days=31+28+31+30+31+30+31+31;monthDays=30;break;}
case 10: {days=31+28+31+30+31+30+31+31+30;monthDays=31;break;}
case 11: {days=31+28+31+30+31+30+31+31+30+31;monthDays=30;break;}
case 12: {days=31+28+31+30+31+30+31+31+30+31+30;monthDays=31;break;}
} //判断查找年份是否闰年
if((_year%4==0&&_year%100!=0)||(_year%400==0))
{
if(_month>2)days=days+1;//如果闰年且月份大于二月,总天数+1
if(_month==2)monthDays=monthDays+1;//如果闰年且月份等于二月,当月天数+1
}
days=days+beforeDays;//计算总天数
week=days%7;//计算所需查找月份的一号是礼拜几
getInfo(monthDays,week);//输出万年历
}
//输出万年历
static public void getInfo(int monthDays,int week) {
int a[]=new int[31];//月份的天数,初始化都有31天
int j=0;//判断换行(一周七天)
for(int i=0;i<31;i++) a[i]=i+1;//初始化月份
System.out.println(" 日 一 二 三 四 五 六");
if(week!=6) for(j=0;j<=week;j++) System.out.print(" ");//如果所需查找月份的一号不是礼拜天,就空出空位
for(int k=0;k<monthDays;k++)//开始输出日期
{
if(k<9)
System.out.print(" "+a[k]);
else if(k<monthDays)
System.out.print(" "+a[k]);
j++;
if(j==7)
{
System.out.println("");
j=0;
}
}
}
public static void main(String x[]){
int year=2011,month=1;//-----------------这里是改变查找条件的地方!!!!
Days(year,month);
}
}
import java.awt.event.*;
import java.util.*;
class MainFrame extends JFrame
{
private static final long serialVersionUID = 4395459176419007992L;
JPanel panel=new JPanel(new BorderLayout());
JPanel panel1=new JPanel();
JPanel panel2=new JPanel(new GridLayout(7,7));
JPanel panel3=new JPanel();
JLabel []label=new JLabel[49];
JLabel y_label=new JLabel("年份");
JLabel m_label=new JLabel("月份");
JComboBox com1=new JComboBox();
JComboBox com2=new JComboBox();
JButton button=new JButton("查看");
JButton button2=new JButton("修改");
Date today = new Date();
JSpinner s = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MONTH));
JSpinner.DateEditor de = new JSpinner.DateEditor(s, "yyyy'年'MM'月'dd'日'HH:mm:ss");
int re_year,re_month;
int x_size,y_size;
String year_num;
Calendar now=Calendar.getInstance(); //实例化Calendar
MainFrame(){
super("万年历");
setSize(300,350);
x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size-300)/2,(y_size-350)/2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
panel1.add(button);
s.setEditor(de);
s.setEnabled(true);
panel3.add(s);
panel3.add(button2);
for(int i=0;i<49;i++){
label[i]=new JLabel("",JLabel.CENTER);//将显示的字符设置为居中
panel2.add(label[i]);
}
panel.add(panel1,BorderLayout.NORTH);
panel.add(panel2,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.WHITE);
Init();
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int c_year,c_month,c_week;
c_year=Integer.parseInt(com1.getSelectedItem().toString()); //得到当前所选年份
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1; //得到当前月份,并减1,计算机中的月为0-11
c_week=use(c_year,c_month); //调用函数use,得到星期几
Resetday(c_week,c_year,c_month); //调用函数Resetday
}});
setContentPane(panel);
setVisible(true);
setResizable(false);
}
public void Init(){
int year,month_num,first_day_num;
String log[]={"日","一","二","三","四","五","六"};
for(int i=0;i<7;i++){
label[i].setText(log[i]);
}
for(int i=0;i<49;i=i+7){
label[i].setForeground(Color.red); //将星期日的日期设置为红色
}
for(int i=6;i<49;i=i+7){
label[i].setForeground(Color.green);//将星期六的日期设置为绿色
}
for(int i=1;i<10000;i++){
com1.addItem(""+i);
}
for(int i=1;i<13;i++){
com2.addItem(""+i);
}
month_num=(int)(now.get(Calendar.MONTH)); //得到当前时间的月份
year=(int)(now.get(Calendar.YEAR)); //得到当前时间的年份
com1.setSelectedIndex(year-1); //设置下拉列表显示为当前年
com2.setSelectedIndex(month_num); //设置下拉列表显示为当前月
first_day_num=use(year,month_num);
Resetday(first_day_num,year,month_num);
}
public int use(int reyear,int remonth){
int week_num;
now.set(reyear,remonth,1); //设置时间为所要查询的年月的第一天
week_num= (int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
return week_num;
}
public void Resetday(int week_log,int year_log,int month_log){
int month_score_log; //判断是否是闰年的标记
int month_day_score; //存储月份的天数
int count;
month_score_log=0;
month_day_score=0;
count=1;
if(year_log%4==0&&year_log%100!=0||year_log%400==0){//判断是否为闰年
month_score_log=1;
}
month_log=month_log+1; //将传来的月份数加1
switch(month_log){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
month_day_score=31;
break;
case 4:
case 6:
case 9:
case 11:
month_day_score=30;
break;
case 2:
if(month_score_log==1){
month_day_score=29;
}
else{
month_day_score=28;
}
break;
}
for(int i=7;i<49;i++){ //初始化标签
label[i].setText("");
}
week_log=week_log+6; //将星期数加6,使显示正确
month_day_score=month_day_score+week_log;
for(int i=week_log;i<month_day_score;i++,count++){
label[i].setText(count+"");
}
}
public static void main(String [] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
MainFrame start=new MainFrame();
}
}