TC1.6SourceCode java课程表
/** * @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课程表的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- leetcode.图.207课程表-Java
1. 具体题目 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1].给定 ...
- Java实现 LeetCode 630 课程表 III(大小堆)
630. 课程表 III 这里有 n 门不同的在线课程,他们按从 1 到 n 编号.每一门课程有一定的持续上课时间(课程时间)t 以及关闭时间第 d 天.一门课要持续学习 t 天直到第 d 天时要完成 ...
- Java实现 LeetCode 210 课程表 II(二)
210. 课程表 II 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0, ...
- Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- 从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;
原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 整个系统用Java开发.我们现在要做的是类似于超 ...
- Java实验2-数据库编程
目标:掌握Java数据库编程 内容: 学生选课系统包括如下数据库表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredi ...
- Java 多线程(1)-Thread和Runnable
一提到Java多线程,首先想到的是Thread继承和Runnable的接口实现 Thread继承 public class MyThread extends Thread { public void ...
随机推荐
- 学会了这些redis知识点,面试官会觉得你很nb(转自十年技术大牛)
是数据结构而非类型 很多文章都会说,redis支持5种常用的数据类型,这其实是存在很大的歧义.redis里存的都是二进制数据,其实就是字节数组(byte[]),这些字节数据是没有数据类型的,只有把它们 ...
- Druid 0.17 入门(3)—— 数据接入指南
在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...
- JDK环境的配置,及运用
JAVA为什么可以跨平台 1.JDK配置环境变量 步骤:打开控制面板中系统和安全------系统-----找到高级系统设置点击属性------高级----环境变量------系统变量(JAVA_HOM ...
- 环境篇:VMware Workstation安装Centos7
环境篇:VMware Workstation安装Centos7 1 VMware Workstation安装 CentOS下载地址:http://isoredirect.centos.org/cent ...
- [bash]http serevr部署wordpress
#!/bin/bash # echo "close selinux…" sed -i 's/Enforcing/disabled/' /etc/sysconfig/selinux ...
- 洛谷1541 乌鬼棋 dp入门
题目链接:https://www.luogu.com.cn/problem/P1541 给定一个序列和一个操作序列,操作序列中只有1234四个数字,表示可以前进的步数,初始在1处,操作最后一定会全部用 ...
- 《数据库优化》- MySQL视图
一.什么是视图 视图,是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改,视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通俗地讲,视图就 ...
- Contest 156
2019-09-29 14:56:09 总体感受:30min解决了前三题,最后一题其实也很简单,但是题目没有看清.赛后5min解决了.总体来说,本次周赛是比较简单的一次. 注意点:首先是hard问题的 ...
- 1、Spark Core所处位置和主要职责
Spark组件是基于分布式资源引擎层(Yarn等)和分布式存储层(HDFS等)之上的一个组件,Spark本质上是一个计算引擎,负责计算的,根据不同计算场景划分出了SQL.Streaming.MLib. ...
- JUC 中提供的限流利器-Semaphore(信号量)
在 JUC 包下,有一个 Semaphore 类,翻译成信号量,Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源.Semaphore 跟锁 ...