首页 > 代码库 > TC1.6SourceCode

TC1.6SourceCode

/** * @version  2.0 * @author sharks*//** * Instruction  * this version will use IO * apply file to store data * it just a table double click table can edit the course    * */import java.io.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import java.awt.*;import java.awt.event.*;/** *Graphic *7 JTalbe add to JScrollPane   *  * *//** * I should use cardlayout.there are seven days a week  * and ten classes one day(as Big class is five ) * so every day should take 5 rows and 3 columns (5,3) *  * *//** * how to generate file * first get info from table  * second when click button get info from table and write to file  * when opening this software read file from local  * when renew info must reload file   * */class TC extends JFrame implements ActionListener,java.io.Serializable{ //Serializable this interface can write to file    private JButton[] btn = new JButton[10];        JScrollPane[] sp = new JScrollPane[7];            private CardLayout c = new CardLayout();        private JPanel p = new JPanel(c);        private JPanel pbottom = new JPanel();        private JMenuItem[] week = new JMenuItem[7];    private JMenuBar mb = new JMenuBar();    private JMenu[] jm = new JMenu[3];        //evert day has a Table  ,so everyday generate a file ,so just give values     //seven panel respentsevent days for sunday    private JTable[] mt = new JTable[7];        String temp = null ;        int current = 0;        JMenuItem ul = null;    JMenuItem lk = null;        //table headers             String headers[] = {"When","Name","Teacher","Class"};            // table data            Object[][] cdata = http://www.mamicode.com/new Object[5][4];        public void launch(){        //get previous        //Bottom Panel                btn[0] = new JButton("Pervious");        btn[1] = new JButton("Next");        btn[0].addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent arg0) {                                c.previous(p);                current = current-1;                if(current<0)current = 6;                try {                    setData();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                System.out.println(current);                        }});                btn[1].addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent e) {                            c.next(p);                current ++ ;                if(current>6)current=0;                try {                    setData();                } catch (IOException e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }                System.out.println(current);            }});                                                        pbottom.add(btn[0]);        pbottom.add(btn[1]);                        //setMenubar        jm[0] = new JMenu("Week ");                week[0] = new JMenuItem("Sun");        week[1] = new JMenuItem("Mon");        week[2] = new JMenuItem("Tue");        week[3] = new JMenuItem("Wed");        week[4] = new JMenuItem("Thu");        week[5] = new JMenuItem("Fri");        week[6] = new JMenuItem("Sat");                for(int i = 0 ;i<7 ;i++){            week[i].addActionListener(this);            jm[0].add(week[i]);            }        //lock table         jm[1] = new JMenu("Edit");         ul = new JMenuItem("UnLock");         lk = new JMenuItem("Lock  ");         ul.addActionListener(this);         lk.addActionListener(this);        jm[1].add(ul);        jm[1].add(lk);        // load pamel         jm[2] = new JMenu("Help");        JMenuItem bl = new JMenuItem("MyBlog");        bl.addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent arg0) {                String command = "explorer.exe http://www.cnblogs.com/oaks";                try {                    Runtime.getRuntime().exec(command);                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }});        JMenuItem he = new JMenuItem("Help");        he.addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent e) {                JPanel pp = new JPanel(new GridLayout(6,1,8,8));                pp.add(new JLabel("1.you can select menubar to loacte week"));                pp.add(new JLabel("2.double click table to edit this TableCourse"));                pp.add(new JLabel("3.when you make it up,you must use ‘Lock‘menuitem to store the data you inputed"));                pp.add(new JLabel("4.when the table is locked ,you can`t edit it ever until youclick ‘UnLoak‘ menuitem"));                p.add(pp,"8");                c.show(p, "8");            }});        jm[2].add(bl);        jm[2].add(he);        //add three menus        for(int i = 0 ;i<3 ;i++){        mb.add(jm[i]);        }                /**         * help         *          * */                        /**         * it display by values from object         * before every displaying read file to give values          * */                for(int i = 0 ;i<7;i++){            mt[i] = new JTable(cdata,headers);            mt[i].getTableHeader().setPreferredSize(new Dimension(100,40));        mt[i].setPreferredScrollableViewportSize(new Dimension(this.getWidth(),this.getHeight()));        mt[i].setRowHeight(50);        TableColumn column = null;        int colunms = mt[i].getColumnCount();        for(int j = 0; j < colunms; j++)        {            column = mt[i].getColumnModel().getColumn(j);                        column.setPreferredWidth(150);        }                    mt[i].setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);        sp[i] = new JScrollPane(mt[i]);        //sp[i].setSize(500, 500);        // 0  == sunday         p.add(sp[i],i+"");                        }                                                                                                                                        //set panel content        /**generate content         * week panel should have a  common table but different values         * just in different give table item different values          * */                  //add week panel to p[0] panel 1-8        //panel start with 1 represent Panel1 and 7 represent sunday         //at last it belongs panel          //add monday first ,so it display mon day ,the first panel num1                                 setTitle("TC1.6");                setBounds(600,200,600,381);                this.setJMenuBar(mb);                add(p,BorderLayout.CENTER);        setResizable(false);        add(pbottom,BorderLayout.SOUTH);        //this.pack();        try {            setData();        } catch (IOException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        setVisible(true);        //style on close this frame        setDefaultCloseOperation(EXIT_ON_CLOSE);    }    @Override    public void actionPerformed(ActionEvent e){                //set events  for week menu        for(int i = 0;i<7;i++){            if(e.getSource().equals(week[i]))                switch(i){                case 0:                                                                                                                        current = 0 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "0");                    // 0 == sunday                    break;                case 1:                     current = 1 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                                                            c.show(p, "1");                    break;                                    case 2:                    current = 2;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "2");                                                                                break;                case 3:                     current = 3 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "3");                                        break;                case 4:                                         current = 4 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "4");                                                                                break;                case 5:                    current = 5 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "5");                                        break;                case 6:                     current = 6 ;                    try {                        setData();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    c.show(p, "6");                                                            break;                                default:                    System.out.println("Occur error on switch!");                }        }                //file store &&&&data read        /**         * lock means write file reload file and setEditable=No         * first  I should know which panel is displaying          * so I should write a method to get Which panel is displaying         * */                        if(e.getSource().equals(lk)){            String tmp = null ;                                                                        /*                        for(int i = 0 ;i<5;i++){                                for(int j = 0;j<4;j++){                                        temp = (String)mt[0].getValueAt(i, j);                    System.out.println(temp);                    if(temp==null){                        temp = "n";                    }                    try {                        dos.writeUTF(temp);                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                                                        }            }            try {                dos.flush();                fos.close();            dos.close();                        } catch (IOException e1) {                // TODO Auto-generated catch block                e1.printStackTrace();            }                        */            String filename = null;            filename="e:/TC/week"+current+".dat";            File file = new File(filename);            FileOutputStream fos = null;            try {                                        fos = new FileOutputStream(file);                } catch (FileNotFoundException e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }            DataOutputStream dos = new DataOutputStream(fos);                            for(int i = 0 ;i<mt[current].getRowCount();i++){                                                                                                                            for(int j = 0;j<mt[current].getColumnCount();j++){                    temp = (String)mt[current].getValueAt(i, j);                                        if(temp==null){                                                temp = "nl";                    }                    try {                                                dos.writeUTF(temp);                        System.out.println(temp);                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                }                                                        }                        try {                    dos.flush();                    fos.close();                    dos.close();                } catch (IOException e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }                        try {                setData();            } catch (IOException e1) {                // TODO Auto-generated catch block                e1.printStackTrace();            }            mt[current].setEnabled(false);            this.setTitle("TC1.6---Locked");        }                        //file read & data store         if(e.getSource().equals(ul)){            mt[current].setEnabled(true);            //System.out.println("this panel false");            this.setTitle("Week At:"+current+"   TC1.6---UnLocked");        }                            }    /**     * this method help get current panel      * */    /*    public int  getCurrent(){                        if(current>6){            //max of current is 6,never than 6 so ,never equal 0            current = 0 ;        }        if(current <1 ){            current  = 6 ;        }        return current ;    }*/            public void setData() throws IOException{                String fn = null;        Object o =new Object();        fn="e:/TC/week"+current+".dat";        File ff = new File(fn);        FileInputStream fis = new FileInputStream(ff);        DataInputStream dis = new DataInputStream(fis);                for(int i = 0;i<5;i++){                        for(int j = 0;j<4;j++){                            fn=dis.readUTF();                if(fn.equals("nl")){                                        fn = "";                }            //    System.out.println(fn);                o = (Object)fn;                mt[current].setValueAt(o, i, j);                            }        }        fis.close();        dis.close();        switch(current){        case 0: this.setTitle("TC1.6 --Sunday");break;        case 1: this.setTitle("TC1.6 --Monday");break;        case 2: this.setTitle("TC1.6 --Tuesday");break;        case 3: this.setTitle("TC1.6 --Wednesay");break;        case 4: this.setTitle("TC1.6 --Thursday");break;        case 5: this.setTitle("TC1.6 --Friday");break;        case 6: this.setTitle("TC1.6 --Saturday");break;                }            }    public static void main(String[] args){        String fname = null;        File f = new File("e:/TC");        if(!f.exists()){        f.mkdir();        }        for(int i =0 ;i<7;i++){            fname = "e:/TC/"+"week"+i+".dat";            f = new File(fname);            if(!f.exists()){                try {                    f.createNewFile();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }        TC t = new TC();        t.launch();            }    }