java编写日历程序设计,日历的设计与实现(Java课程设计)
本文实例为大家分享了爪哇岛实现日历应用程序设计的具体代码,供大家参考,具体内容如下
1、效果和要求
*在文本框输入年中输入年份,验证年份的有效性;按回车键后,显示输入年份的正确日历* 单击上月按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的12月* 单击下个月按钮,可以显示当前月的下一月的日历;如果月份大于1,则显示下一年的数字一(一)月
2、源码
CalendarBean.java
导入Java。util。日历;公共类日历豆{ String day[];int year=2013,month=0;public void setYear(int year){ this。年份=年份;} public int getYear(){ return year;} public void set month(int month){ this。月=月;} public int getMonth(){ return month;} //返回某年某月数字一(一)号开始的日期数组public String[]getDays(){ String a[]=new String[42];日历日历=日历。getinstance();//注意:1月份是从0开始,所以要减数字一(一)日历。设置(年,月- 1,1);(同国际组织)国际组织星期几=日历。获取(日历。星期几)-1;int day=0;if(month==1 month==3 month==5 month==7 month==8 month==10 month==12){ day=31;} if(month==4 month==6 month==9 month==11){ day=30;} if(month==2){ if(((year % 4==0)(year % 100!=0)) (year % 400==0)){ day=29;} else { day=28} } for (int i=星期几,n=1;我星期几天;I){ a[I]=字符串。(n)值;n;}返回a;} }日历框架。爪哇岛
导入javax。挥棒。*;导入Java。awt。*;导入Java。awt。事件。动作事件;导入Java。awt。事件。动作监听器;公共类日历框架扩展JFrame { JLabel label day[]=new JLabel[42];JLabel labelYearJButton title name[]=new JButton[7];JButton nextMonth,previous monthjlabel showMessageJTextField inputYearCalendarBean日历;字符串名称[]={ 日, 一, 二, 三, 四, 五, 六 };int year=2013,month=1;字符串天数[];public CalendarFrame() { super(日历应用程序);calendar=新日历bean();calendar.setYear(年份);calendar.setMonth(月);天数=日历。getdays();
// 窗口添加scrollPane在中心区 add(getCenterPanel(),BorderLayout.CENTER); // 窗口添加pNorth 在北面区域 add(getNorthPanel(),BorderLayout.NORTH); // 窗口添加pSouth 在南区域。 add(getSouthPanel(),BorderLayout.SOUTH); } private JPanel getNorthPanel() { JPanel panel = new JPanel(); labelYear = new JLabel("请输入年份:"); inputYear = new JTextField(10); previousMonth = new JButton("上月"); nextMonth = new JButton("下月"); /** * 添加时间监听 */ inputYear.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try{ year = Integer.parseInt(inputYear.getText()); }catch (NumberFormatException el){ JOptionPane.showMessageDialog(null,"请输入正确年份!"); } calendar.setYear(year); UpdateUI(); } }); previousMonth.addActionListener(new ActionListener() {//上个月 @Override public void actionPerformed(ActionEvent e) { month--;//获取上个月的时间 //System.out.println("Hello World"); if(month<=0){//跳到上一年 year--; month = 12; } UpdateUI();; } }); nextMonth.addActionListener(new ActionListener() {//下个月 @Override public void actionPerformed(ActionEvent e) { month++; if(month>12){//到达下一年 year++; month=1; } UpdateUI();; } }); panel.add(labelYear,new FlowLayout()); panel.add(inputYear,new FlowLayout()); panel.add(previousMonth,new FlowLayout()); panel.add(nextMonth,new FlowLayout()); return panel; } private JPanel getCenterPanel() { JPanel panel = new JPanel(); // 将panel的布局设置为7行7列的GridLayout布局 panel.setLayout(new GridLayout(7,7)); for (int i = 0; i < 7; i++) { titleName[i] = new JButton(name[i]); // panel添加组件titleName[i] panel.add(titleName[i]); } for (int i = 0; i < 42; i++) { labelDay[i] = new JLabel(days[i], JLabel.CENTER); // panel添加组件labelDay[i] panel.add(labelDay[i]); } return panel; } private JPanel getSouthPanel() { JPanel panel = new JPanel(); showMessage = new JLabel("日历: " + year + "年" + month + "月"); panel.add(showMessage); return panel; } //添加的方法 private void UpdateUI(){ calendar.setYear(year); calendar.setMonth(month); days = calendar.getDays(); for (int i = 0; i < 42; i++) { labelDay[i].setText(days[i]); } showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月"); }}CalendarMainClass.java
import javax.swing.*;public class CalendarMainClass { public static void main(String args[]) { CalendarFrame frame = new CalendarFrame(); frame.setBounds(100, 100, 360, 320); frame.setVisible(true); frame.validate(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。