您好,登錄后才能下訂單哦!
這篇“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); } }
以上就是關于“java如何實現(xiàn)日歷應用程序設計”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。