Java --简单的日历程序

完整工程下载地址http://download.csdn.net/download/qq_29777421/9891911

package com.java.calendar;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;



import java.util.Calendar;
import java.util.GregorianCalendar;


public class PermnentCalendar extends JFrame {
    /**
     * 
     */
    private Calendar now = Calendar.getInstance();
    private JTextField year = new JTextField(String.valueOf(now.get(Calendar.YEAR)),4);
    private JTextField month = new JTextField(String.valueOf(now.get(Calendar.MONTH)+1),2);
    private JButton addyear = new JButton(" >>");
    private JButton subyear = new JButton("<< ");
    private JButton addmonth = new JButton(" > ");
    private JButton submonth = new JButton(" < ");
    private JButton weekday[] = new JButton[7];
    private JLabel day[] = new JLabel[42];
    private JLabel today = new JLabel();
    private static final long serialVersionUID = 1L;

    public PermnentCalendar() 
     {
        super("万年历   By scg");
        Container pane =getContentPane();
        pane.setLayout(new BorderLayout());
        JPanel top = new JPanel();
        JPanel center = new JPanel();
        JPanel foot = new JPanel();
        top.setOpaque(false);//透明
        center.setOpaque(false);
        foot.setOpaque(false);
        pane.add(top,BorderLayout.NORTH);

        subyear.setBorder(BorderFactory.createRaisedBevelBorder()); //button凸起来的效果
        addyear.setBorder(BorderFactory.createRaisedBevelBorder()); 
        submonth.setBorder(BorderFactory.createRaisedBevelBorder()); 
        addmonth.setBorder(BorderFactory.createRaisedBevelBorder()); 
        top.add(subyear);
        top.add(year);
        top.add(addyear);
        top.add(new JLabel("年"));
        top.add(submonth);
        top.add(month);
        top.add(addmonth);
        top.add(new JLabel("月"));
        pane.add(center,BorderLayout.CENTER);
        center.setLayout(new GridLayout(7, 7));
        String wd[] = { "日", "一", "二", "三", "四", "五", "六" };
        for (int i=0;i<7;i++) 
        {
            weekday[i] = new JButton(wd[i]);
            weekday[i].setContentAreaFilled(false);
            weekday[i].setFont(new Font("宋体", 1 , 16));
            weekday[i].setForeground(Color.WHITE);  
            center.add(weekday[i]);
        }
        for (int i = 0; i < 42; i++) 
        {      
               day[i] = new JLabel("", JLabel.CENTER);
               center.add(day[i]);
        }
        Create(now.get(Calendar.YEAR),now.get(Calendar.MONTH)+1);
        addyear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                year.setText(String.valueOf(Integer.parseInt(year.getText())+1));
                Create(Integer.parseInt(year.getText()),Integer.parseInt(month.getText()));

            }
        });
        subyear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                year.setText(String.valueOf(Integer.parseInt(year.getText())-1));
                Create(Integer.parseInt(year.getText()),Integer.parseInt(month.getText()));

            }
        });
        addmonth.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if(Integer.parseInt(month.getText())==12)
                    month.setText("1");
                else
                    month.setText(String.valueOf(Integer.parseInt(month.getText())+1));
                Create(Integer.parseInt(year.getText()),Integer.parseInt(month.getText()));

            }
        });
        submonth.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if(Integer.parseInt(month.getText())==1)
                    month.setText("12");
                else
                    month.setText(String.valueOf(Integer.parseInt(month.getText())-1));
                Create(Integer.parseInt(year.getText()),Integer.parseInt(month.getText()));

            }

        });
        pane.add(foot,BorderLayout.SOUTH);
        foot.add(today);
        today.setFont(new Font("隶书", Font.PLAIN , 16));
        today.setText("今天是 公历"+String.valueOf(now.get(Calendar.YEAR))+"年"
                        +String.valueOf(now.get(Calendar.MONTH)+1)+"月"
                        +String.valueOf(now.get(Calendar.DATE))+"日"
                        +"  星期"+String.valueOf(now.get(Calendar.DAY_OF_WEEK)-1));


     }

    public void Create(int y,int m)
    {
        int j=0;
        GregorianCalendar date = new GregorianCalendar(y,m-1,1);//公历类,一月Calendar.Month=0
        date.set(Calendar.DAY_OF_MONTH,1);

        for (int i=Calendar.SUNDAY; i<date.get(Calendar.DAY_OF_WEEK); i++) //Calendar.SUNDAY=1
            day[j++].setText("");
        while (date.get(Calendar.MONTH)==m-1)
        {
            if(date.get(Calendar.YEAR)==now.get(Calendar.YEAR)&&date.get(Calendar.MONTH)==now.get(Calendar.MONTH)&&date.get(Calendar.DAY_OF_MONTH)==now.get(Calendar.DATE))
            {
                day[j].setForeground(Color.MAGENTA);                      
            }
            else if(date.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY)
            {
                day[j].setForeground(Color.RED);
            }
            else
                day[j].setForeground(Color.BLACK);
                day[j].setFont(new Font("宋体", Font.BOLD , 16));
                day[j++].setText(String.valueOf(date.get(Calendar.DAY_OF_MONTH)));
                date.add(Calendar.DAY_OF_MONTH, 1);
        }
        while(j<42)
            day[j++].setText("");

}
    /**
     * @param args
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PermnentCalendar app = new PermnentCalendar();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setBounds(400,100,500,400);
        ImageIcon bg = new ImageIcon("bg.jpg"); 
        JLabel label = new JLabel(bg); 
        label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight());
        app.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE)); 
        JPanel jp=(JPanel)app.getContentPane(); 
        jp.setOpaque(false);
        app.setVisible(true);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值