现在的位置: 首页 > 综合 > 正文

java写的一个日历行程

2013年12月04日 ⁄ 综合 ⁄ 共 11738字 ⁄ 字号 评论关闭

 

package com.yntsoft.student.custom.controller;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;
import java.io.*;

public class Note extends Frame {

 private MenuBar mb;
 private Menu mset_param, mhelp;
 private MenuItem mibc, miSound;
 private MenuItem miabout;
 // 缺省的背景颜色
 private static Color backgroundcolor = Color.GRAY;

 // funtction of the button on plcb is chose year andmonth
 // and set alarm colock and remind booking
 private JCheckBox remindBook, alarmColock;
 private JComboBox cbyears, cbmonths;
 private JPanel plcb;
 // 日历按钮
 private JPanel plbt;
 private JButton button[];
 // add vector to contain button[],so that find it
 private Vector v;
 // save the year and month
 private String choseyear, chosemonth;
 private int choseyearint, chosemonthint;
 private boolean changed = false;
 private boolean fileExist = false;// the application first run to find
          // file
 private static boolean needSound;

 // add text to write down what to do in the future
 private TextArea tanote;
 private JPanel plta;

 // 默认的年份
 private final static String years[] = { "1995", "1996", "1997", "1998",
   "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006",
   "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014",
   "2015", "2016", "2017", "2018", "2019", "2020" };

 private static final String months[] = { "January", "February", "March",
   "April", "May", "June", "July", "August", "September", "October",
   "November", "December" };

 private final static int dom[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
   30, 31 };

 // save the first day of the month to use
 private int start;
 // save the button who is entered
 private int btnIndex;

 public Note() {
  mb = new MenuBar();
  mset_param = new Menu("设置");
  mhelp = new Menu("帮助");
  mibc = new MenuItem("背景");
  miSound = new MenuItem("声音");
  miabout = new MenuItem("关于...");

  mset_param.add(mibc);
  mset_param.addSeparator();
  mset_param.add(miSound);
  mhelp.add(miabout);
  setMenuBar(mb);
  mb.add(mset_param);
  mb.setHelpMenu(mhelp);

  MListener ml = new MListener();
  mibc.addActionListener(ml);
  miabout.addActionListener(ml);
  miSound.addActionListener(ml);

  cbyears = new JComboBox();
  cbmonths = new JComboBox();
  plcb = new JPanel();
  plcb.setLayout(new FlowLayout());
  JLabel lyears = new JLabel("年份:");
  JLabel lmonths = new JLabel("月份:");
  plcb.add(lyears);
  plcb.add(cbyears);
  plcb.add(lmonths);
  plcb.add(cbmonths);
  remindBook = new JCheckBox("预约提示", true);
  alarmColock = new JCheckBox("闹钟");
  // Dimension d = new Dimension();
  // remindBook.setSize(d);
  // remindBook.getSize(d);
  // System.out.println("W:"+d.getWidth()+" H:"+d.getHeight());
  plcb.add(remindBook);
  plcb.add(alarmColock);
  remindBook.addActionListener(new RemindListener());
  alarmColock.addActionListener(new RemindListener());
  add(plcb, BorderLayout.NORTH);

  // add calendar
  getCalendar();

  plbt = new JPanel();
  plbt.setBackground(Color.BLUE);
  plbt.setLayout(new GridLayout(7, 7));

  plbt.add(new JLabel(" 星期日"));
  plbt.add(new JLabel(" 星期一"));
  plbt.add(new JLabel(" 星期二"));
  plbt.add(new JLabel(" 星期三"));
  plbt.add(new JLabel(" 星期四"));
  plbt.add(new JLabel(" 星期五"));
  plbt.add(new JLabel(" 星期六"));

  // add calendar button to frame
  // add button to vector;
  v = new Vector();
  button = new JButton[42];
  for (int i = 0; i < 41; i++) {
   button[i] = new JButton();
   plbt.add(button[i]);
   button[i].addActionListener(new ButtonListener());
   v.add(button[i]);
  }

  button[41] = new JButton();
  plbt.add(button[41]);
  button[41].setText("保存");
  button[41].addActionListener(new SaveListener());
  add(plbt, BorderLayout.CENTER);

  // add note book
  // plta = new JPanel();
  tanote = new TextArea(5, 80);
  // tanote.addTextListener(new tanoteTextListener());
  // tanote.setColumns(80);
  // plta.add(tanote);
  // tanote.SCROLLBARS_VERTICAL_ONLY;
  add(tanote, BorderLayout.SOUTH);

  /*
   * //add date to button GregorianCalendar calendar = new
   * GregorianCalendar(choseyearint ,chosemonthint ,1); int start =
   * calendar.get(Calendar.DAY_OF_WEEK)-1; int daysInMonth =
   * dom[chosemonthint];
   * if(calendar.isLeapYear(choseyearint)&&chosemonthint == 1){
   * ++daysInMonth; } for(int i =0;i<daysInMonth;i++){
   * button[start+i].setText(" "+(i+1)+" "); }
   */
  // add the default year and month to JComboBox
  for (int i = 0; i <= 25; i++) {
   cbyears.addItem(years[i]);
  }
  for (int i = 0; i < 12; i++) {
   cbmonths.addItem(months[i]);
  }
  /*
   * //add current year and month
   * cbyears.setSelectedIndex(choseyearint-1995);
   * cbmonths.setSelectedIndex(chosemonthint);
   */

  // show date to calendar
  showDate();
  // open file add to note
  Calendar now = new GregorianCalendar();
  int num = start + now.get(Calendar.DAY_OF_MONTH) - 1;
  btnIndex = num;
  readFile(num);
  fileSound();

  // add threadcb to listen jcombobox state
  new ThreadCB().start();

  // listen the JComboBox of years and months
  cbyears.addItemListener(new cbyearsItemListener());
  cbmonths.addItemListener(new cbmonthsItemListener());

  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
   }
  });
 }

 /**
  * add menu listener to know the menu what do want to do
  */
 class MListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   MenuItem i = (MenuItem) e.getSource();
   if (i.equals(miabout)) {
    JOptionPane.showMessageDialog(null, "日历记事本程序V1.0", "关于...",
      JOptionPane.INFORMATION_MESSAGE);
   } else if (i.equals(mibc)) {
    // backgroundcolor = Color.BLACK;
    backgroundcolor = JColorChooser.showDialog(null, "选择颜色...",
      getBackground());
    setBackground(backgroundcolor);
    plbt.setBackground(backgroundcolor);
    // System.out.println(choseyear);
    // //
   } else {
    JOptionPane.showMessageDialog(null,
      "I am sorry ,this function is not complation", "Sorry",
      JOptionPane.INFORMATION_MESSAGE);
   }
  }
 }

 /**
  * add the year JComboBox listener to know what active
  */
 class cbyearsItemListener implements ItemListener {
  public void itemStateChanged(ItemEvent e) {
   // System.out.println(e.paramString());
   // System.out.println(e.getStateChange());
   // System.out.println(e.getItem().toString());
   // if(e.getSource().equals("1997")){
   // System.out.println("1997 is chosed");
   // }
   // else{
   // System.out.println("the System is not chose 1997");
   // }
   // choseyear = e.getItem().toString();
   changed = true;
   // showDate();
   // cbmonths.setSelectedIndex(5);
  }
 }

 /**
  * add the month JComboBox listener to know what active
  */
 class cbmonthsItemListener implements ItemListener {
  public void itemStateChanged(ItemEvent e) {
   // System.out.println(choseyear);
   // chosemonth = e.getItem().toString();
   changed = true;

   // chosemonthint = Integer.parseInt(chosemonth);
   // System.out.println(chosemonthint);
   // showDate();
  }
 }

 public static void main(String args[]) {
  System.out.println("Starting Note...");
  Note mainFrame = new Note();
  mainFrame.setSize(600, 400);
  mainFrame.setTitle("日历记事本");
  mainFrame.setBackground(backgroundcolor);
  mainFrame.setVisible(true);
  for (int i = 0; i < 10; i++) {
   System.out.print("\007");
  }
  // Thread dd = new ThreadCB();
  // dd.start();
  // mainFrame.paintCalendar();
 }

 protected void getCalendar() {
  Calendar now = new GregorianCalendar();
  // System.out.println("year :"+now.get(Calendar.YEAR));
  // System.out.println("month:"+now.get(Calendar.MONTH));
  // int y = now.get(Calendar.YEAR);
  // choseyear = Integer.toString(y);
  // int m = now.get(Calendar.MONTH);
  // chosemonth = Integer.toString(m+1);
  choseyearint = now.get(Calendar.YEAR);
  chosemonthint = now.get(Calendar.MONTH);
  // System.out.println("y "+choseyear+"::"+chosemonth);
 }

 /**
  * show date to calendar
  */
 protected void showDate() {
  GregorianCalendar calendar = new GregorianCalendar(choseyearint,
    chosemonthint, 1);
  start = calendar.get(Calendar.DAY_OF_WEEK) - 1;
  int daysInMonth = dom[chosemonthint];
  if (calendar.isLeapYear(choseyearint) && chosemonthint == 1) {
   ++daysInMonth;
  }
  for (int i = 0; i < daysInMonth; i++) {
   button[start + i].setForeground(Color.BLACK);
   button[start + i].setText(" " + (i + 1) + " ");
  }
  // set current day
  int nowDay = start + calendar.get(Calendar.DAY_OF_MONTH);
  button[nowDay + 1].setForeground(Color.RED);
  // add current year and month
  cbyears.setSelectedIndex(choseyearint - 1995);
  cbmonths.setSelectedIndex(chosemonthint);
 }

 // listen the buttons active
 class ButtonListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   Object obj = e.getSource();
   // System.out.println("haha"+e.getSource());
   btnIndex = v.indexOf(obj);
   readFile(btnIndex);
   /*
    * switch(v.indexOf(obj)){ case 1: System.out.println("i am
    * button1"); break; case 2: // System.out.println("I am button2");
    * readFile(2); break; case 41:
    * System.out.println(tanote.getText()); break; default:
    * System.out.println("I do not know who am I"); break; }
    */}
 }

 /**
  * create a thread to listen the year or month´s state
  */
 class ThreadCB extends Thread {
  public void run() {
   while (true) {
    if (changed) {
     changed = false;
     choseyearint = cbyears.getSelectedIndex() + 1995;
     chosemonthint = cbmonths.getSelectedIndex();
     // System.out.println("y:"+choseyearint+":M:"+chosemonthint);
     for (int i = 0; i < 40; i++) {
      button[i].setText("");
     }
     showDate();
    }
    try {
     sleep(200);
    } catch (InterruptedException e) {
     System.err.println(e);
    }
   }
  }
 }

 /**
  * add note book listener to know the textarea active
  */
 /*
  * class tanoteTextListener implements TextListener{ public void
  * textValueChanged(TextEvent e){ //System.out.println(e.getSource()); } }
  */

 /**
  * check file to know the file is exist if exist,read it to the note book
  */
 protected void readFile(int bt) {
  int y = cbyears.getSelectedIndex() + 1995;// real year
  int m = cbmonths.getSelectedIndex() + 1;// real month
  String fileName = Integer.toString(y) + Integer.toString(m) + "button"
    + Integer.toString(bt);
  // System.out.println("I am dudu");
  // System.out.println(fileName);
  // String fileName = "testDay.java";

  File file = new File(fileName);
  BufferedReader is;
  String line;
  StringBuffer sb = new StringBuffer();

  tanote.setText("");
  if (file.exists()) {
   try {
    is = new BufferedReader(new FileReader(fileName));

    while ((line = is.readLine()) != null) {
     sb.append(line);
     sb.append("\n");
    }
    is.close();
   } catch (IOException e) {
    System.err.println(e);
    System.exit(0);
   }
   tanote.setText(sb.toString());
   fileExist = true;
  } else {
   System.out.println(fileName + " is not exists");
  }

 }

 /**
  * sound
  */
 protected void fileSound() {
  if (remindBook.isSelected()) {
   if (fileExist) {
    /*
     * for(int i=0;i<10;i++){ System.out.println("\007"); }
     */
    needSound = true;
   }
  }
 }

 /**
  * listen the save button active
  */
 class SaveListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   int bt = btnIndex;
   int y = cbyears.getSelectedIndex() + 1995;// real year
   int m = cbmonths.getSelectedIndex() + 1;// real month
   String fileName = Integer.toString(y) + Integer.toString(m)
     + "button" + Integer.toString(bt);

   try {
    BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
    // int row = tanote.getRows();
    // System.out.println("rows:"+row);
    String s = tanote.getText();
    System.out.println("length:" + s.length());
    bw.write(s);

    bw.close();
   } catch (IOException ev) {
    System.err.println(ev);
    System.exit(0);
   }
  }
 }

 //
 class RemindListener implements ActionListener {
  public void actionPerformed(ActionEvent ae) {
   Object obj = ae.getSource();
   if (obj.equals(remindBook)) {
    if (remindBook.isSelected()) {
     System.out.println("I am selected");
    } else {
     System.out.println("I am not selected");
    }
   } else {
    if (alarmColock.isSelected()) {
     // System.out.println("I am selected");
     final JFrame jf = new JFrame("设置时间");
     jf.setSize(300, 100);
     jf.setLocation(200, 200);
     jf.setVisible(true);
     // Font f = new Font( ,Font.BOLD ,20);
     JLabel jl = new JLabel("逗你玩");
     String name = jl.getFont().getName();
     // System.out.println("Font:"+name);//name´s value is Dialog
     Font f = new Font(name, Font.BOLD + Font.ITALIC, 20);
     jl.setForeground(Color.red);
     jl.setFont(f);
     jf.getContentPane().setLayout(new GridLayout(5, 2));
     jf.getContentPane().add(new JLabel(" "));
     jf.getContentPane().add(jl);
     jf.getContentPane().add(
       new JLabel("sorry! this function is not do!!"));
     jf.pack();
     jf.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent we) {
       jf.dispose();
      }
     });
    } else {
     System.out.println("I am not selected");
    }
   }
  }
 }
}

抱歉!评论已关闭.