文章标题

自己做的一个简单日历

public class Main
{
    public static void main(String[] args)
    {
         MyDate md=new MyDate(2015,1);
         MyFrame mf=new MyFrame();
         mf.setFrame(md);
    }
}
public class MyDate
{
    private int m;

    private int y;

    SimpleDateFormat sdf;

    Calendar c = Calendar.getInstance();

    String strEE;

    public MyDate (int y, int m)
    //设置当前时间,Calendar中月份从0开始,0代表一月份,传进来的值减1才是代表要设置的月份
    {
        c.set(y, m - 1, 01);
        this.y = y;
        this.m = m;
    }

    public void dc()
    {

        strEE = String.format("%tA", c.getTime());

        System.out.println(strEE);
    }

    public int dayofmonth()//返回当月有多天
    {
        if (m == 4 || m == 6 || m == 9 || m == 11)
        {
            return 30;
        }
        else if (m == 2)
        {
            if (y % 4 == 0 && y%100 != 0 || y % 400 == 0)
            {
                return 29;
            }
            else
            {
                return 28;
            }
        }
        else
        {
            return 31;
        }


    }

    public String weekofmonth()//  返回当月第一天是星期几
    {

        return String.format("%tA", c.getTime());
    }

}
public class MyFrame implements ActionListener
{
    private MyThread mt;
    MyDate md;
    JLabel[] jlabelArray = new JLabel[7];
    JButton[] jbuttonArray = new JButton[42];
    JPanel jp1 = new JPanel();
    JPanel jp2 = new JPanel();
    int k = 0;
    String[] str = {"日", "一", "二", "三", "四", "五", "六"};
    JTextField jtf1=new JTextField(5);;
    JTextField jtf2=new JTextField(5);  

    public void setFrame(MyDate md)
    {
        this.md=md;
        JFrame f = new JFrame();

        mt = new MyThread(f);
        mt.start();
        for (int i = 0; i < jlabelArray.length; i++)
        {
            jlabelArray[i] = new JLabel("星期" + str[i]);
            jp1.add(jlabelArray[i]);
        }//设置星期面板

        for (int j = 0; j < jlabelArray.length; j++)
        {

            if (md.weekofmonth().equals("星期" + str[j]))
            {
                k = j;
            }
        }//判断dc.weekofmonth为星期几,若为5,则从星期五设置当月1号

        for (int i = 0; i < jbuttonArray.length; i++)
        {

            if (i > k && i < md.dayofmonth() + k)
                //从K+1处设置2号,后面依次设置当前月的天数(dc.dayofmonth())个button
            {
                jbuttonArray[i] = new JButton(String.valueOf((i + 1 - k)));
                jp2.add(jbuttonArray[i]);
            }
            else if (i == k)//从第K个button设置1号
            {
                jbuttonArray[i] = new JButton(String.valueOf(1));
            }
            else//其余的button设置为空
            {
                jbuttonArray[i] = new JButton(" ");
            }
            jp2.add(jbuttonArray[i]);
            jbuttonArray[i].setBackground(Color.yellow);
        }
        JLabel jl1=new JLabel("请输入年份:");
        JLabel jl2=new JLabel("请输入月份:");
        JPanel jp=new JPanel();
        JButton jb1=new JButton("确定");
        jb1.addActionListener(this);
        jp.add(jl1);
        jp.add(jtf1);
        jp.add(jl2);
        jp.add(jtf2);
        jp.add(jb1);
        jp1.setLayout(new GridLayout(1, 7));
        jp2.setLayout(new GridLayout(6, 7));
        jp1.setBounds(0, 0, 500, 80);
        jp2.setBounds(0, 80, 500, 220);
        f.add(jp1, BorderLayout.NORTH);
        f.add(jp2);
        f.add(jp,BorderLayout.SOUTH);
        f.setSize(600, 400);
        f.setLocation(300, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        MyDate md1=new MyDate(Integer.valueOf(jtf1.getText()),Integer.valueOf(jtf2.getText()));


            for (int j = 0; j < jlabelArray.length; j++)
            {

                if (md1.weekofmonth().equals("星期" + str[j]))
                {
                    k = j;
                }
            }//判断dc.weekofmonth为星期几,若为5,则从星期五设置当月1号

            for (int i = 0; i < jbuttonArray.length; i++)
            {

                if (i > k && i < md1.dayofmonth() + k)
                    //从K+1处设置2号,后面依次设置当前月的天数(dc.dayofmonth())个button
                {
                    jbuttonArray[i].setText(String.valueOf((i + 1 - k)));
//                  jp2.add(jbuttonArray[i]);
                }
                else if (i == k)//从第K个button设置1号
                {
                    jbuttonArray[i].setText(String.valueOf(1));
                }


                else//其余的button设置为空
                {
                    jbuttonArray[i].setText(" ");
                }
                jbuttonArray[i].setBackground(Color.yellow);
//              jp2.add(jbuttonArray[i]);
            }
    }
}
public class MyThread extends Thread//用线程设置当前时间,放在JFrame的标题栏
{
    private JFrame jf;
    public MyThread(JFrame jf)
    {
        this.jf = jf;

    } 

    public void run()
    {
        while (true)
        {
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String sdate = sdf.format(date);
            jf.setTitle("当前时间为:" + sdate);


            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值