java万年历

来源:互联网 发布:ug编程2次开粗经验 编辑:程序博客网 时间:2024/05/21 04:41

直接上代码~实现万年历的小程序,打开默认为系统时间,添加了输入异常。

代码:

package java实验十;import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.*;public class calendar extends JFrame implements ActionListener{private JButton wen,fort,next,queding;//按钮private JLabel rili;private JLabel zhong;private JTextField nian,yue1;private JLabel date[]=new JLabel[42];private int dates[]=null;SimpleDateFormat df = new SimpleDateFormat("yyyy");  //获得系统当前时间SimpleDateFormat df1 = new SimpleDateFormat("MM");SimpleDateFormat df2 = new SimpleDateFormat("dd");int year = Integer.parseInt(df.format(new Date())); int month = Integer.parseInt(df1.format(new Date()));int day = Integer.parseInt(df2.format(new Date()));Calendar now = Calendar.getInstance();public calendar() {System.err.println("当前月份"+month);setTitle("05林-万年历");setSize(400,350);         //jframe设置基本属性dates=new int [42];now.clear();now.set(year,month-1,1);    for(int i1=now.get(Calendar.DAY_OF_WEEK)-1,d=1;d<=now.getActualMaximum(Calendar.DAY_OF_MONTH);d++,i1++)       //获取日期数组{dates[i1]=d;}JPanel j1=new JPanel();//新建中间容器JPanel j2=new JPanel();JPanel j3=new JPanel();j2.setLayout(new GridLayout(7, 7));  //设置中间流式布局j1.add(fort=new JButton("上月"));j1.add(rili=new JLabel("当前年月:"+year+"年"+month+"月"));j1.add(next=new JButton("下月"));fort.addActionListener(this);               //注册监听器next.addActionListener(this);               //注册监听器add(j1,BorderLayout.PAGE_START);j2.add(wen=new JButton("日"));j2.add(wen=new JButton("一"));j2.add(wen=new JButton("二"));j2.add(wen=new JButton("三"));j2.add(wen=new JButton("四"));j2.add(wen=new JButton("五"));j2.add(wen=new JButton("六"));for(int i=0;i<42;i++) {String n=String.valueOf(String.valueOf(dates[i]));     //添加日历显示框if(dates[i]==0) {j2.add(date[i]=new JLabel("",JLabel.CENTER));continue;}j2.add(date[i]=new JLabel(n,JLabel.CENTER));}add(j2,BorderLayout.CENTER);//////////////////查询功能j3.add(zhong=new JLabel("查询:"));j3.add(nian=new JTextField(6));j3.add(zhong=new JLabel("年"));j3.add(yue1=new JTextField(6));j3.add(zhong=new JLabel("月"));j3.add(queding=new JButton("确定"));queding.addActionListener(this);//////////////add(j3,BorderLayout.PAGE_END);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}public void actionPerformed(ActionEvent e) {            //设置执行事件if(e.getSource()==fort) {shang();}if(e.getSource()==next) {xia();}if(e.getSource()==queding) {caxun();}}private void caxun() {              //查询功能String y=nian.getText();try{year = Integer.parseInt(y);}catch(NumberFormatException e) {JOptionPane.showConfirmDialog(null, "输入年份不正确 " ,"查找结果",JOptionPane.CANCEL_OPTION); }//year = Integer.parseInt(y);                 //用户输入异常判断String m=yue1.getText();try{ month = Integer.parseInt(m);}catch(NumberFormatException e) {JOptionPane.showConfirmDialog(null, "输入月份不正确 " ,"查找结果",JOptionPane.CANCEL_OPTION); }//month = Integer.parseInt(m);// year = Integer.parseInt(y);          //设置选定的日期// month = Integer.parseInt(m); if (month>12||month<1) {JOptionPane.showConfirmDialog(null, "输入月份不正确 " ,"查找结果",JOptionPane.CANCEL_OPTION);}else{now.clear();now.set(year,month-1,1);              System.err.println("当前月份"+month);for(int a=0;a<42;a++)                 //更改日期数组date[a].setText("");for(int i1=now.get(Calendar.DAY_OF_WEEK)-1,d=1;d<=now.getActualMaximum(Calendar.DAY_OF_MONTH);d++,i1++)                                  //处理代码{dates[i1]=d;String n;date[i1].setText(n=String.valueOf(String.valueOf(dates[i1])));//数组写进显示框};rili.setText("当前年月:"+year+"年"+month+"月");}}private void shang() {month--;if(month==0) {month=12;year--;}now.clear();now.set(year,month-1,1);System.err.println("当前年月月份"+month);for(int a=0;a<42;a++)date[a].setText("");for(int i1=now.get(Calendar.DAY_OF_WEEK)-1,d=1;d<=now.getActualMaximum(Calendar.DAY_OF_MONTH);d++,i1++)                                  //下个月处理代码{dates[i1]=d;String n;date[i1].setText(n=String.valueOf(String.valueOf(dates[i1])));};rili.setText("当前年月:"+year+"年"+month+"月");}private void xia() {month++;if(month==13) {month=1;year++;}now.clear();now.set(year,month-1,1);System.err.println("当前月份"+month);for(int a=0;a<42;a++)date[a].setText("");for(int i1=now.get(Calendar.DAY_OF_WEEK)-1,d=1;d<=now.getActualMaximum(Calendar.DAY_OF_MONTH);d++,i1++)                                  //上个月处理代码{dates[i1]=d;String n;date[i1].setText(n=String.valueOf(String.valueOf(dates[i1])));};rili.setText("当前年月:"+year+"年"+month+"月");}public static void main(String[] args) {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e) {}SwingUtilities.invokeLater(new Runnable() {public void run() {new calendar();}});}}

运行:



总结;界面布局比较麻烦,日期类真好用。。





原创粉丝点击