一個人的Java

          2005年12月12日 #

          一個簡單日記本的源程序,功能并不完全,請高人指點

          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;

          //默認(rèn)的年份
          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("設(shè)置");
          mhelp = new Menu("幫助");
          mibc = new MenuItem("背景");
          miSound = new MenuItem("聲音");
          miabout = new MenuItem("關(guān)于...");

          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("預(yù)約提示",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","關(guān)于..." ,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("設(shè)置時間");
          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");
          }
          }
          }
          }
          }

          posted @ 2005-12-25 15:35 lemon 閱讀(1249) | 評論 (0)編輯 收藏

          關(guān)于JAVA學(xué)習(xí)

               本人這段時間暫時沒有學(xué)習(xí)JAVA了,所以很少來上面發(fā)文章。但我個人覺得JAVA還是很有趣的語言,我以后還會繼續(xù)學(xué)習(xí)的,謝謝大家的支持…

          posted @ 2005-12-12 21:37 lemon 閱讀(243) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 松江区| 五华县| 金阳县| 连州市| 淅川县| 和平区| 休宁县| 金昌市| 怀来县| 黄陵县| SHOW| 军事| 太仆寺旗| 顺平县| 淮安市| 定襄县| 冀州市| 南宫市| 疏勒县| 三原县| 眉山市| 阳信县| 周宁县| 景泰县| 晋宁县| 西峡县| 崇明县| 永德县| 保德县| 宁蒗| 新乡市| 工布江达县| 岳普湖县| 岳阳市| 财经| 阿坝| 承德县| 穆棱市| 南昌县| 临清市| 浙江省|