⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testjcalendar.java

📁 java简单日历(万年历)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*; 
import javax.swing.*;

class JCalendar extends JPanel
{ 
    //动态表示年月日 
    private int year=0; 
    private int month=0; 
    private int day=0;
     
    //主面板 
    private JPanel Main = new JPanel(); 
    //日面板 
    private JPanel jPanelDay = new JPanel(); 
    //月面板 
    private JPanel jPanelMonth = new JPanel();
    //星期面板 
    private JPanel weekPanel=new JPanel();
    //天面板 
    private JPanel Days = new JPanel();
    
    private JPanel jPanelButton = new JPanel();
    
    //年的输入位置 
    private JTextField Year = new JTextField(); 
    //月的输入位置 
    private JTextField Month = new JTextField();
    //显示日期的位置 
    private JLabel Out = new JLabel(); 
         
    //减少月份 
    private JButton MonthDown = new JButton(); 
    //增加月份 
    private JButton MonthUp = new JButton(); 
    //减少年份 
    private JButton YearDown = new JButton(); 
    //增加年份 
    private JButton YearUp = new JButton();
     
    
    //中国时区,以后可以从这里扩展可以设置时区的功能 
    private Locale l=Locale.CHINESE; 
    //主日历 
    private GregorianCalendar cal=new GregorianCalendar(l); 
     
    //天按钮组 
    private JToggleButton[] days=new JToggleButton[42]; 
     
    //标示 
    private JLabel jLabel1 = new JLabel(); 
    private JLabel jLabel2 = new JLabel(); 
    private JLabel jLabel3 = new JLabel(); 
    private JLabel jLabel4 = new JLabel(); 
    private JLabel jLabel5 = new JLabel(); 
    private JLabel jLabel6 = new JLabel(); 
    private JLabel jLabel7 = new JLabel(); 
    //当前选择的天数按钮 
    private JToggleButton cur=null; 
    //月份天数数组,用来取得当月有多少天 
    // 1 2 3 4 5 6 7 8 9 10 11 12 
    private int[] mm={31,28,31,30,31,30,31,31,30,31,30,31}; 

    //空日期构造函数 
    public JCalendar()
    { 
        try 
        { 
            jbInit(); 
        } 
        catch(Exception e) 
        { 
            e.printStackTrace();        //打印整个Exception轨迹栈
        } 
    } 
    //带日期设置的构造函数 
    public JCalendar(int year, int month, int day) 
    { 
        cal.set(year, month, day); 
        try 
        { 
            jbInit(); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 
    //带日历输入的构造函数 
    public JCalendar(GregorianCalendar calendar) 
    { 
        cal=calendar; 
        try 
        { 
            jbInit(); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 
    //带日期输入的构造函数 
    public JCalendar(Date date) 
    { 
        cal.setTime(date); 
        try 
        { 
            jbInit(); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 
    //初始化组件 
    private void jbInit() throws Exception 
    { 
        //初始化年、月、日 
        iniCalender(); 

        this.setLayout(new BorderLayout());         //采用边界式布局
        this.setBorder(BorderFactory.createRaisedBevelBorder()); 
        this.setMaximumSize(new Dimension(200, 200)); 
        this.setMinimumSize(new Dimension(200, 200)); 
        this.setPreferredSize(new Dimension(200, 200)); 

        Main.setLayout(new BorderLayout());         //主面板采用边界式布局
        Main.setBackground(SystemColor.info); 
        Main.setBorder(null); 

        Out.setBackground(Color.lightGray); 
        Out.setHorizontalAlignment(SwingConstants.CENTER); 
        Out.setMaximumSize(new Dimension(100, 19)); 
        Out.setMinimumSize(new Dimension(100, 19)); 
        Out.setPreferredSize(new Dimension(100, 19)); 

        jLabel1.setForeground(Color.red); 
        jLabel1.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel1.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel1.setText("日"); 
        jLabel2.setForeground(Color.blue); 
        jLabel2.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel2.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel2.setText("六"); 
        jLabel3.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel3.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel3.setText("五"); 
        jLabel4.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel4.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel4.setText("四"); 
        jLabel5.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel5.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel5.setText("三"); 
        //jLabel6.setBorder(null); 
        jLabel6.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel6.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel6.setText("二"); 
        jLabel7.setBackground(Color.lightGray); 
        jLabel7.setForeground(Color.black); 
        //jLabel7.setBorder(null); 
        jLabel7.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel7.setHorizontalTextPosition(SwingConstants.CENTER); 
        jLabel7.setText("一"); 

        weekPanel.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient")); 
        weekPanel.setBorder(BorderFactory.createEtchedBorder()); 
        weekPanel.setLayout(new GridLayout(1,7));       //星期面板采用一行七列的网格式布局
        weekPanel.add(jLabel1, null); 
        weekPanel.add(jLabel7, null); 
        weekPanel.add(jLabel6, null); 
        weekPanel.add(jLabel5, null); 
        weekPanel.add(jLabel4, null); 
        weekPanel.add(jLabel3, null); 
        weekPanel.add(jLabel2, null); 

        MonthUp.setAlignmentX((float) 0.0);     //设置组件沿 x 轴的对齐方式
        MonthUp.setActionMap(null); 

        jPanelMonth.setBackground(SystemColor.info); 
        jPanelMonth.setLayout(new BorderLayout()); 
        jPanelMonth.setBorder(BorderFactory.createEtchedBorder()); 


        Month.setBorder(null); 
        Month.setHorizontalAlignment(SwingConstants.CENTER);
        //为月输入位置设置鼠标监听者 
        Month.addMouseListener(new java.awt.event.MouseAdapter() { 
            public void mouseClicked(MouseEvent e) { 
                Month_mouseClicked(e); 
            } 
        }); 
        //为月输入位置设置键盘监听者
        Month.addKeyListener(new java.awt.event.KeyAdapter() { 
            public void keyPressed(KeyEvent e) { 
                Month_keyPressed(e); 
            } 
        }); 

        MonthDown.setBorder(null); 
        MonthDown.setText("\u25C4");
        // 为月份减少按钮设置监听者
        MonthDown.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                MonthDown_actionPerformed(e); 
            } 
        }); 
        MonthUp.setBorder(null); 
        MonthUp.setText("\u25BA");
        // 为月份增加按钮设置监听者 
        MonthUp.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                MonthUp_actionPerformed(e); 
        } 
        }); 


        jPanelButton.setLayout(null); 
        jPanelButton.setBorder(null);
        // 为按钮面板设置监听者 
        jPanelButton.addComponentListener(new java.awt.event.ComponentAdapter() { 
            public void componentResized(java.awt.event.ComponentEvent evt) { 
                jPanelButtonComponentResized(evt); 
            } 
        }); 

        Year.setBorder(BorderFactory.createEtchedBorder()); 
        Year.setMaximumSize(new Dimension(80, 25)); 
        Year.setMinimumSize(new Dimension(80, 25)); 
        Year.setPreferredSize(new Dimension(80, 25)); 
        Year.setHorizontalAlignment(SwingConstants.CENTER); 
        // 为年输入位置设置鼠标监听者
        Year.addMouseListener(new java.awt.event.MouseAdapter() { 
            public void mouseClicked(MouseEvent e) { 
                Year_mouseClicked(e); 
            } 
        }); 
        // 为年输入位置设置键盘监听者
        Year.addKeyListener(new java.awt.event.KeyAdapter() { 
            public void keyPressed(KeyEvent e) { 
                Year_keyPressed(e); 
            } 
        }); 

        YearDown.setBorder(null); 
        YearDown.setMaximumSize(new Dimension(16, 16)); 
        YearDown.setMinimumSize(new Dimension(16, 16)); 
        YearDown.setPreferredSize(new Dimension(16, 16)); 
        YearDown.setSize(new Dimension(16, 16)); 
        YearDown.setText("▼");
        // 为年份减少按钮设置监听者 
        YearDown.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                YearDown_actionPerformed(e); 
            } 
        }); 
        YearUp.setBorder(null); 
        YearUp.setMaximumSize(new Dimension(16, 16)); 
        YearUp.setMinimumSize(new Dimension(16, 16)); 
        YearUp.setPreferredSize(new Dimension(16, 16)); 
        YearUp.setSize(new Dimension(16, 16)); 
        YearUp.setText("▲");
        // 为年份增加按钮设置监听者 
        YearUp.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                YearUp_actionPerformed(e); 
            } 
        }); 

        jPanelDay.setLayout(new BorderLayout()); 

        Days.setLayout(new GridLayout(6,7)); //天面板设置为6行7列的网格布局
        Days.setBackground(SystemColor.info); 

        for(int i=0;i<42;i++)
        { 
            days[i]=new JToggleButton(); 
            days[i].setBorder(null); 
            days[i].setBackground(SystemColor.info); 
            days[i].setHorizontalAlignment(SwingConstants.CENTER); 
            days[i].setHorizontalTextPosition(SwingConstants.CENTER); 
            //days[i].setSize(l,l); 
            days[i].addActionListener(new java.awt.event.ActionListener(){ 
                public void actionPerformed(ActionEvent e) { 
                    day=Integer.parseInt(((JToggleButton)e.getSource()).getText()); 
                    showDate(); 
                    showDays(); 
                } 
            }); 
            Days.add(days[i]); 
        } 

        this.add(Main, BorderLayout.NORTH); 
        this.add(jPanelDay, BorderLayout.CENTER); 
        this.add(jPanelMonth, BorderLayout.SOUTH); 

        Main.add(Year, BorderLayout.CENTER); 
        Main.add(Out, BorderLayout.WEST); 
        Main.add(jPanelButton, BorderLayout.EAST); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -