首页 > 代码库 > 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(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。