<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了java實現日曆應用程式設計的具體程式碼,供大家參考,具體內容如下
1、效果和要求
*在文字方塊inputYear中輸入年份,驗證年份的有效性;按確認鍵後,顯示輸入年份的正確日曆
* 單擊previousMonth按鈕可以顯示當前月的上一月的日曆;如果月份小於1,則顯示上一年的12月
* 單擊nextMonth按鈕,可以顯示當前月的下一月的日曆;如果月份大於1,則顯示下一年的1月
2、原始碼
CalendarBean.java
import java.util.Calendar; public class CalendarBean { String day[]; int year = 2013, month = 0; public void setYear(int year) { this.year = year; } public int getYear() { return year; } public void setMonth(int month) { this.month = month; } public int getMonth() { return month; } //返回某年某月1號開始的日期陣列 public String[] getDays() { String a[] = new String[42]; Calendar 日曆 = Calendar.getInstance(); //注意:1月份是從0開始,所以要減1 日曆.set(year, month - 1, 1); int 星期幾 = 日曆.get(Calendar.DAY_OF_WEEK) - 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 < 星期幾 + day; i++) { a[i] = String.valueOf(n); n++; } return a; } }
CalendarFrame.java
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CalendarFrame extends JFrame{ JLabel labelDay[] = new JLabel[42]; JLabel labelYear; JButton titleName[] = new JButton[7]; JButton nextMonth, previousMonth; JLabel showMessage; JTextField inputYear; CalendarBean calendar; String name[] = { "日", "一", "二", "三", "四", "五", "六" }; int year = 2013, month = 1; String days[]; public CalendarFrame() { super("日曆應用程式"); calendar = new CalendarBean(); calendar.setYear(year); calendar.setMonth(month); days = calendar.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); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45