我就想用图形用户界面显示
可是不会,可不可以帮下忙
应该怎么做,效果想很系统的那个差不多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);
}
}

解决方案 »

  1.   

    那楼主就学一个AWT  和 swing 这两个用来做界面。
      

  2.   

    为什么不用java Calendar呢,现成的实现。
      

  3.   

    还是建议找本教程看看Swing入门部分最多几十页也就够了~
      

  4.   

    import javax.swing.*;import java.awt.*;
    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();
        }    
    }