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 ...
随机推荐
- Python面向对象之:类空间问题以及类之间的关系
一. 类的空间问题 1.1 何处可以添加对象属性 class A: def __init__(self,name): self.name = name def func(self,sex): se ...
- js 任意值变化封装
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 0318 guava并发工具
并发是一个难题,但是可以通过使用强力简单的抽象来显著的简化,为了简化问题,guava扩展了Future接口,即 ListenableFuture (可以监听的Future).我强烈建议你在你的所有代码 ...
- 小程序post请求,后台接收不到数据的解决方法
wx.request({ url: 'myurl', method:'POST', dataType:'json', data: { mydata:mydata }, success(res) { c ...
- MySQL笔记(5)-- SQL执行流程,MySQL体系结构
MySQL的体系结构,可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程:Server层包括连接层.查询缓存.分析器.优化器.执行器等,涵盖MySQL的大多数核心服务功能,以及所有 ...
- mysql刷题(不定时更新)
面试阶段大家基本都会问一些mysql的题,具体的高深理论以后再慢慢补充,但是刷题是不可避免的,下面直接上货 创建/删除表和索引系列 创建表 CREATE TABLE if not exists `te ...
- Swift 4.0 高级-自定义操作符
在Swift语言中,常见的操作符有+.-.*./.>.<.==.&&.||等等,如果不喜欢,你也可以定义自己喜欢的操作符. 操作符类型 中置运算符(infix operat ...
- Fast and accurate bacterial species identification in urine specimens using LC-MS/MS mass spectrometry and machine learning (解读人:闫克强)
文献名:Fast and accurate bacterial species identification in urine specimens using LC-MS/MS mass spectr ...
- OLED的使用-4线SPI驱动
一 .OLED屏 1.OLED屏(七针) 2.OLED电路图 3.0.96'OLED简介 该模块特点: 1.三色可选,模块有两种单色和黄蓝双色两种颜色可选,单色为纯白色和纯蓝色,双 色为黄蓝双色: 2 ...
- Building Applications with Force.com and VisualForce(Dev401)( 八):Designing Applications for Multiple users:Managing your users' experience II
Dev 401-008: Design Applications for Multiple Users' Experience Part 2Universal Containers Scenario1 ...