码迷,mamicode.com
首页 > 其他好文 > 详细

TC1.6SourceCode

时间:2014-06-28 14:05:29      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   get   

/**
 * @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 = 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();
        
    }
    



}

 

TC1.6SourceCode,布布扣,bubuko.com

TC1.6SourceCode

标签:style   blog   http   java   color   get   

原文地址:http://www.cnblogs.com/oaks/p/3798430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!