/**
 * @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,"7");
                c.show(p, "7");
                */
                String command = "notepad e:/TC/help.txt";
                try {
                    Runtime.getRuntime().exec(command);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

            }});
        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(400,180,600,386);

        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++){
            pbottom.setVisible(true);
            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;
        case 7: this.setTitle("TC1.6 --Help");break;
        default: this.setTitle("TC1.6 --Welcome");break;
        }

    }
    /**
     * copy files in execute package to local disk
     * it needs file object
     * */
    /*public void copyMethod(InputStream cpf,String mf)throws IOException{
        int tp = 0 ;

        BufferedInputStream is = new BufferedInputStream(cpf);

        String extr = "e:/TC/";
        File cpfd =new File(extr+mf);
        System.out.println(extr+mf);
        if(!cpfd.exists()){
            cpfd.createNewFile();
        }
        FileOutputStream os = new FileOutputStream(cpfd);

        while((tp = is.read())!=-1){
            os.write(tp);
        }
        os.flush();
        is.close();
        os.flush();
    }
    */
    public static void main(String[] args){
        String fname = null;
        TC t = new TC();
        File f = new File("e:/TC");
        if(!f.exists()){
        f.mkdir();

        }

        for(int i =0 ;i<7;i++){
            f = new File("e:/TC/week"+i+".dat");
            if(!f.exists()){
                try {
                    f.createNewFile();

                    FileOutputStream foo = null;
                try {
                    foo = new FileOutputStream(f);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                DataOutputStream doo = new DataOutputStream(foo);
                for(int j = 0;j<20;j++){
                    try {
                        doo.writeUTF("nl");
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

        }
        f = new File("e:/TC/help.txt");

        if(!f.exists()){
            try {
                f.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            FileWriter foos = null;

            try {
                foos = new FileWriter(f);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

        BufferedWriter bos = new BufferedWriter(foos);

        try {
            bos.write("1.you can select menubar to loacte week");
            bos.newLine();
            bos.write("2.double click table to edit this TableCourse");
            bos.newLine();
            bos.write("3.when you make it up,you must use 'Lock'menuitem to store the data you inputed");
            bos.newLine();
            bos.write("4.when the table is locked ,you can`t edit it ever until youclick 'UnLoak' menuitem");
            bos.flush();
            foos.close();
            bos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        }

        t.launch();

    }

}

TC1.6SourceCode java课程表的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. leetcode.图.207课程表-Java

    1. 具体题目 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1].给定 ...

  3. Java实现 LeetCode 630 课程表 III(大小堆)

    630. 课程表 III 这里有 n 门不同的在线课程,他们按从 1 到 n 编号.每一门课程有一定的持续上课时间(课程时间)t 以及关闭时间第 d 天.一门课要持续学习 t 天直到第 d 天时要完成 ...

  4. Java实现 LeetCode 210 课程表 II(二)

    210. 课程表 II 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0, ...

  5. Java实现 LeetCode 207 课程表

    207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...

  6. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  7. 从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;

    原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 整个系统用Java开发.我们现在要做的是类似于超 ...

  8. Java实验2-数据库编程

    目标:掌握Java数据库编程 内容: 学生选课系统包括如下数据库表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredi ...

  9. Java 多线程(1)-Thread和Runnable

    一提到Java多线程,首先想到的是Thread继承和Runnable的接口实现 Thread继承 public class MyThread extends Thread { public void ...

随机推荐

  1. Docker基本概念及架构

    一.Docker基本概念 Docker是一个开源的容器引擎,基于Go 语言并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  2. 什么是yarn,如何使用yarn安装项目依赖

    一.yarn的简介: Yarn是facebook发布的一款取代npm的包管理工具. 二.yarn的特点: 1.速度超快. Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载 ...

  3. pytorch RNN层api的几个参数说明

    classtorch.nn.RNN(*args, **kwargs) input_size – The number of expected features in the input x hidde ...

  4. NFS作为根文件系统,挂载超时

    NFS服务器配置正确后,使用ramfs,通过mount能够正常挂载NFS,但是作为ROOTFS无法正常挂载,显示超时. 经查看log,RPC报错-120. 分析结果: 在Ubuntu1804上,nfs ...

  5. 第八周Java实验作业

    实验六 接口的定义与使用 实验时间 2018-10-18 1.实验目的与要求 (1) 掌握接口定义方法: 声明:  public interface 接口名 {...} 接口体中包含常量定义和方法定义 ...

  6. Filebeat快速入门

    Filebeat快速入门 本笔记整理于https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html ...

  7. 报错:Error instantiating class com.liwen.mybatis.bean.Employee with invalid types () or values ().

    实体类默认构造方法是无参构造方法,一旦重写构造方法,默认方法就会变成重写之后的构造方法,所以该错误报的错就是实体类缺少无参构造方法

  8. 逻辑回归和sigmoid函数分类

    逻辑回归和sigmoid函数分类:容易欠拟合,分类精度不高,计算代价小,易于理解和实现 sigmoid函数与阶跃函数的区别在于:阶跃函数从0到1的跳跃在sigmoid函数中是一个逐渐的变化,而不是突变 ...

  9. Numpy和OpenCV中的图像几何变换

    介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...

  10. 纯干货 C# 通过 RFC_READ_TABLE 读取 SAP TABLE

    SAP系统又称企业管理解决方案,是全球企业管理软件与解决方案的技术领袖,同时也是市场领导者.通过其应用软件.服务与支持,SAP持续不断向全球各行业企业提供全面的企业级管理软件解决方案. 在实际开发过程 ...