java實現(xiàn)日歷應用程序設計
更新時間:2022年06月13日 08:34:25 作者:CaiBenwei
這篇文章主要為大家詳細介紹了java實現(xiàn)日歷應用程序設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)日歷應用程序設計的具體代碼,供大家參考,具體內容如下
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號開始的日期數(shù)組 ? ? 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在中心區(qū) ?? ??? ?add(getCenterPanel(),BorderLayout.CENTER); ?? ??? ?// 窗口添加pNorth 在北面區(qū)域 ?? ??? ?add(getNorthPanel(),BorderLayout.NORTH); ?? ??? ?// 窗口添加pSouth 在南區(qū)域。 ?? ??? ?add(getSouthPanel(),BorderLayout.SOUTH); ?? ?} ?? ?private JPanel getNorthPanel() { ?? ??? ?JPanel panel = new JPanel(); ?? ??? ?labelYear = new JLabel("請輸入年份:"); ?? ??? ?inputYear = new JTextField(10); ?? ??? ?previousMonth = new JButton("上月"); ?? ??? ?nextMonth = new JButton("下月"); ?? ??? ?/** ?? ??? ? * 添加時間監(jiān)聽 ?? ??? ? */ ?? ??? ?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); ?? ?} }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
javaWeb連接數(shù)據(jù)庫實現(xiàn)簡單登陸注冊功能的全過程
初學javaWeb,老師留下一小作業(yè),用JAVA實現(xiàn)與服務器端交互,實現(xiàn)登錄和注冊功能,下面這篇文章主要給大家介紹了關于javaWeb連接數(shù)據(jù)庫實現(xiàn)簡單登陸注冊功能的相關資料,需要的朋友可以參考下2022-06-06