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();}});}}
运行:
总结;界面布局比较麻烦,日期类真好用。。
阅读全文
0 0
- java万年历
- java 万年历
- Java万年历
- JAVA万年历
- java 万年历
- java万年历
- java万年历
- java万年历
- 【java】万年历
- java--万年历
- JAVA万年历
- java 万年历
- JAVA 万年历
- Java万年历
- java 万年历
- java万年历
- java 万年历Demo
- java输出万年历
- 一、iOS App Extensions
- Linux练习题
- 自定义popupWindow
- python小程序
- cs231nLesson1-3
- java万年历
- 圆
- GPIO
- 2017-12-10杭电OJ2014 《青年歌手大奖赛_评委会打分》
- Linux中用oneinstack安装Tomcat无法启动解决
- 【TensorFlow】理解 Estimators 和 Datasets
- watchService 监控文件生产数量的思路
- c语言实现代码C风格到C++风格的注释转换
- 心理健康工作之成效