日曆顯示讀出輸入的年月的java代碼

來源:互聯網
上載者:User

日曆顯示讀出輸入的年月的java代碼

 這篇文章主要介紹了日曆顯示讀出輸入的年月的java代碼,有需要的朋友可以參考一下

 

代碼如下:

import java.awt.*;

import java.awt.event.*;

import java.util.Calendar;

 

import javax.swing.JOptionPane;

 

class CalendarBean {  //定義一個日曆類

 String day[]; //天數數組

 int year = 2011, month = 9; //給定一個初始年月

 

 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;

 }

 

 public String[] getCalendar() { //獲得日曆

  String a[] = new String[42]; //定義一個以字串數組

  Calendar 日曆 = Calendar.getInstance(); 

  日曆.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;

 }

}

 

class CalendarFrame extends Frame implements ActionListener {

 Label labelDay[] = new Label[42]; //用來輸出日曆的天的數組

 Button titleName[] = new Button[7]; //周一到周天的按鍵

 String name[] = { "日", "一", "二", "三", "四", "五", "六" };

 TextField text1, text2; //定義輸入的年份和月份

 Button nextMonth, previousMonth, Enter; //下個月,上個月,確定

 Label lab1, lab2, lab3; //幾個文本類型的字串

 int year = 2012, month = 9;

 CalendarBean calendar; //頂一個量

 Label showMessage = new Label("", Label.CENTER); //   定義一個用於顯示 當前年月的label 表明,標籤上應為中心。

 

 public CalendarFrame() {    //表單類

  Panel pCenter = new Panel();  //鑲嵌

  pCenter.setLayout(new GridLayout(7, 7));

  for (int i = 0; i < 7; i++) {      //給周日到周六的button添加顯示文本

   titleName[i] = new Button(name[i]);

   pCenter.add(titleName[i]);

  }

  for (int i = 0; i < 42; i++) {      

   labelDay[i] = new Label("", Label.CENTER);

   pCenter.add(labelDay[i]);

  }

  calendar = new CalendarBean();

  calendar.setYear(year);     //設定年

  calendar.setMonth(month);

  String day[] = calendar.getCalendar();  //設定天

  for (int i = 0; i < 42; i++) {     //給日曆位置迴圈添加顯示日曆天

   labelDay[i].setText(day[i]);

  }

  lab1 = new Label("請輸入日期");  //調用一個方法    new一個對象 

  lab2 = new Label("年份");

  lab3 = new Label("月份");

  Enter = new Button("確定");

  text1 = new TextField(10);

  text2 = new TextField(5);

  nextMonth = new Button("下月");

  previousMonth = new Button("上月");

  Enter.addActionListener(this);  //添加指定的動作接聽程式

  nextMonth.addActionListener(this);

  previousMonth.addActionListener(this);

  Panel pNorth = new Panel(), pSouth = new Panel();

  pNorth.add(lab1);

  pNorth.add(lab2);

  pNorth.add(text1);

  pNorth.add(lab3);

  pNorth.add(text2);

  pNorth.add(Enter);

  pNorth.add(previousMonth);

  pNorth.add(nextMonth);

  pSouth.add(showMessage);

  showMessage.setText("日曆:" + calendar.getYear() + "年" + calendar.getMonth() + "月");

  ScrollPane scrollPane = new ScrollPane();  //實現單個子組件的自動水平和/或垂直滾動的容器類

  scrollPane.add(pCenter); 

  add(scrollPane, BorderLayout.CENTER);

  add(pNorth, BorderLayout.NORTH);

  add(pSouth, BorderLayout.SOUTH);

 }

 

 public void actionPerformed(ActionEvent e) {

  if (e.getSource() == nextMonth) { //如果獲得的操作時下個月的

   month = month + 1;

   if (month > 12)

    month = 1;

   calendar.setMonth(month);

   String day[] = calendar.getCalendar();

   for (int i = 0; i < 42; i++) {

    labelDay[i].setText(day[i]);

   }

  } else if (e.getSource() == previousMonth) {

   month = month - 1;

   if (month < 1)

    month = 12;

   calendar.setMonth(month);

   String day[] = calendar.getCalendar();

   for (int i = 0; i < 42; i++) {

    labelDay[i].setText(day[i]);

   }

  } else {

   String yea = text1.getText();

   String mon = text2.getText();

   try {

    year = Integer.parseInt(yea); //把string轉成int類型 

    month = Integer.parseInt(mon);

    if (month > 12 || month < 1 || year < 1) {  //錯誤輸入的處理

     JOptionPane.showMessageDialog(null, "請輸入正確月份或月份"); 

     return;

    } else {

     calendar.setYear(year);

     calendar.setMonth(month);

    }

    String day[] = calendar.getCalendar();

    for (int i = 0; i < 42; i++) {

     labelDay[i].setText(day[i]);

    }

   } catch (NumberFormatException ee) {

    JOptionPane.showMessageDialog(null, "請輸入正確的年份及月份");

   }

  }

  showMessage.setText("日曆:" + calendar.getYear() + "年" + calendar.getMonth() + "月");

 }

 

}

 

public class CalendarMainClass {

 public static void main(String args[]) {

  CalendarFrame frame = new CalendarFrame();

  frame.setTitle("日曆");

  frame.setBounds(300, 200, 500, 300);

  frame.setVisible(true);  //顯示視窗

  frame.validate(); //使生效

  frame.addWindowListener(new java.awt.event.WindowAdapter() {  //點擊叉號關閉frame程式

   public void windowClosing(java.awt.event.WindowEvent e) {

    System.exit(0); 

   }

  });

 }

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.