日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

初次感覺java面向對象的思想

瀏覽:168日期:2024-06-17 15:10:31
內容: /*創建了這個例子,初次感覺啦java的面向對象的精髓,jtable只用來顯示,而使用模板來改變jtable的屬性,實現了表格的顯示與設置分離*/import javax.swing.*;import java.awt.*;import javax.swing.table.*;import java.util.*;import java.awt.event.*;import javax.swing.table.TableColumn;import java.sql.*;import sun.jdbc.odbc.JdbcOdbcDriver;class Typec extends JFrame{ //窗體及窗體控件 JPanel pnla=null; JPanel pnlb=null; JTable table=null; TestModela md=null; TestModelb mdb=null; TableColumn tc=null; javax.swing.JComboBox jc=null; javax.swing.JCheckBox jboxa=null; javax.swing.JCheckBox jboxb=null; DataBase db=new DataBase(); //連接sql數據 javax.swing.JScrollPane js; JButton but; JTextField jt1=null; JTextField jt2=null; JTextField jt3=null; JTextField jt4=null; JTextField jt5=null; //Object數組構造jtable Object[][] a=new Object[2][3]; Object[] b={'a','b','c'}; //Object數組構造jtable Object[][] aa={{'a','b','c'}}; //vector數組構造jtable Vector va,vb,vc; //實現功能 //1)將Object數組構造的jtable添加到窗體上去 //2)將JTable的第一列的屬性改為文本框,第二列的屬性改變為下拉框 void addObject() { table=new JTable(a,b); tc=new TableColumn(); jt1=new javax.swing.JTextField(10); jt1.setBackground(Color.red); jc=new JComboBox(); jc.addItem('男'); jc.addItem('女'); tc=table.getColumnModel().getColumn(1); tc.setCellEditor(new DefaultCellEditor(jt1)); tc=table.getColumnModel().getColumn(2); tc.setCellEditor(new DefaultCellEditor(jc)); js=new JScrollPane(table); this.getContentPane().add(js,BorderLayout.CENTER); this.setSize(700,350); //必須先添加后顯示,不然會不正常的顯示的 this.show(); } //實現功能 //1)使用Object模板來創建JTable //2) 實現JTable的表格邊框的隱藏和顯示b及指定列的隱藏和顯示 void addObjectMd() { pnla=new JPanel(); jt1=new JTextField(10); but=new JButton('設置行高'); but.addActionListener(new butsj()); jboxa=new JCheckBox('隱藏',false); jboxa.addItemListener(new MyItemListener()); jboxb=new JCheckBox('刪除',false); jboxb.addItemListener(new MyItemListener()); pnla.add(jt1); pnla.add(but); pnla.add(jboxa); pnla.add(jboxb); md=new TestModela(aa,b); //使用模板必須數組里有值 table=new JTable(md); js=new JScrollPane(table); pnlb=(JPanel)this.getContentPane(); pnlb.setLayout(new BorderLayout()); pnlb.add(pnla,BorderLayout.NORTH); pnlb.add(js,BorderLayout.CENTER); this.setSize(700,350); //必須先添加后顯示,不然會不正常的顯示的 this.show(); } void addVector() { vc=new Vector(); vc.add('va'); vc.add('vb'); vc.add('vc'); va=new Vector(); va.add(vc); vb=new Vector(); vb.add('va'); vb.add('vb'); vb.add('vc'); table=new JTable(va,vb); js=new JScrollPane(table); this.getContentPane().add(js,BorderLayout.CENTER); this.setSize(700,350); //必須先添加后顯示,不然會不正常的顯示的 this.show(); } void addVectorMd() //czVector模板類 { //定義表中的一條數據,相當于一個一維數組 vc=new Vector(); vc.add('va'); vc.add('vb'); vc.add('vc'); vc.add(new Boolean(false)); va=new Vector(); //將產生的數據增加到va中去 va.add(vc); vb=new Vector(); //定義JTable的標題 vb.add('va'); vb.add('vb'); vb.add('vc'); vb.add('vd'); mdb=new TestModelb(va,vb); table=new JTable(mdb); //表格已構造完畢 js=new JScrollPane(table); jt1=new JTextField(10); jt2=new JTextField(10); jt3=new JTextField(10); jt4=new JTextField(10); but=new JButton('增加'); but.addActionListener(new butsj()); pnla=new JPanel(); pnla.add(jt1); pnla.add(jt2); pnla.add(jt3); pnla.add(jt4); pnla.add(but); pnlb=(JPanel)this.getContentPane(); pnlb.setLayout(new BorderLayout()); pnlb.add(pnla,BorderLayout.NORTH); pnlb.add(js,BorderLayout.CENTER); this.setSize(700,350); //必須先添加后顯示,不然會不正常的顯示的 this.show(); } void addVectorSql() { DataBase.FillVector('select * from students'); va=DataBase.data; //獲取數據庫中的行數據 vb=DataBase.title; //獲取數據庫中的標題 mdb=new TestModelb(va,vb); table=new JTable(mdb); js=new JScrollPane(table); pnla=new JPanel(); pnlb=(JPanel)this.getContentPane(); pnlb.setLayout(new BorderLayout()); pnlb.add(pnla,BorderLayout.NORTH); pnlb.add(js,BorderLayout.CENTER); this.setSize(700,350); //必須先添加后顯示,不然會不正常的顯示的 this.show(); } ////處理Click事件 private class butsj implements ActionListener { public void actionPerformed(ActionEvent e) { if((e.getSource()==but)&&but.getText().equals('增加')) { vc=new Vector(); vc.add(jt1.getText()); vc.add(jt2.getText()); vc.add(jt3.getText()); vc.add(new Boolean(jt4.getText().equalsIgnoreCase('true')));//將此 String 與另一個 String 進行比較,不考慮大小寫。 mdb.AddRow(vc); } else if((e.getSource()==but)&&but.getText().equals('設置行高')) { int h=Integer.parseInt(jt1.getText());//得到輸入的值 if(h>0) table.setRowHeight(h);//設置table的行高 } }}//處理CheckBox 的選中事件 private class MyItemListener implements ItemListener { public void itemStateChanged(ItemEvent e) { //先判斷事件源 再判斷事件源是否被選中 if(e.getSource()==jboxa) if(jboxa.isSelected()) { //設置是否顯示表格線 table.setShowHorizontalLines(true); table.setShowVerticalLines(true); } else { table.setShowHorizontalLines(false); table.setShowVerticalLines(false); } //是否刪除分數列 if(e.getSource()==jboxb) if(jboxb.isSelected())//是否選中 { tc=table.getColumnModel().getColumn(2); table.getColumnModel().removeColumn(tc); table.updateUI(); } else { table.getColumnModel().addColumn(tc); } } } }//這是Typec的右括弧,不要搞混啦//使用Object創建jtable模板class TestModela extends javax.swing.table.DefaultTableModel{ Object[][] data; Object[] title; TestModela(Object[][] d,Object[] t) { super(d,t); this.data=d; this.title=t; } public Object getValueAt(int r,int c) { return data[r][c];//得到r行c列的數據 } public Class getColumnClass(int c) { //將不同的數據類型 //以對應的形式來顯示,大家可以比較這個例子中的顯示 //和前幾個例子的區別 return data[0][c].getClass(); } //設置r行,c列的值為 value //當用戶在修改JTable中的數據時,能自動調用,并修改data中的數據 public void setValueAt(Object value, int r,int c) { data[r][c]=value; }}//使用Vector創建jtable模板//對于JTable來說,它是一個二維結構,表中的整個數據由一個Vector//表中的每一行也是一個Vectorclass TestModelb extends javax.swing.table.DefaultTableModel{ Vector a; Vector b; TestModelb(Vector a,Vector b) { super(a,b); this.a=a; this.b=b; } public Object getValueAt(int c,int b) //得到每一列的數據 { Vector v=(Vector)a.get(c);//取出可變數組中的數據 return v.get(b); //得到每一行沒一列的值 } public Class getColumnClass(int c) { Vector v=(Vector)a.get(0); return v.get(c).getClass(); //將字符串變成各中類型的數據 } public boolean isCellEditable(int r,int c) { //除了第二列不能修改 //其它都可能修改 if(c==2) return false; return true; } //在自定義的TableModel中重寫了AddRow方法 //向data中增加一個Vector,相當于增加了一條記錄 public void AddRow(Vector row) { a.add(row); this.fireTableDataChanged();//通知所有偵聽器,表的所有行單元格值可能已更改,如果不調用,將不會更改 } //???????????????????如何實現刪除行呢}/*// 在pubs數據庫中建一個表studentscreate table students(st_xh varchar(10),st_name varchar(10),st_age int)insert into studentsvalues('1000 0001','小王',25) 再建一個Odbc數據源test 聯結pubs*/ class DataBase //cz數據庫類 { public static Connection conn=null;//這是一個連接對象 public static ResultSet rs=null;//這是一個記錄集對象 public static Statement st=null;//這是一個語名對象 public static PreparedStatement pst=null;//執行帶參數據的語句 public static CallableStatement cst=null;//執行存儲過程 public static ResultSetMetaData rsmd=null;//得到記錄集的原信息 public static Vector data,title,row; //在構造函數中去聯結數據庫 public DataBase() { data=new Vector(); title=new Vector(); //必須使用異常捕獲,不然程序將報錯 try{ Class.forName('sun.jdbc.odbc.JdbcOdbcDriver'); conn=DriverManager.getConnection('jdbc:odbc:test','sa','sa'); st=conn.createStatement(); }catch(SQLException e) { e.printStackTrace(); }catch(Exception e) { e.printStackTrace(); } } //根據strSql來向兩個集合增加數據 //data中存放表中的每條記錄,每條記錄也放入一個Vector中 //title中存放表的列的信息,根據ResultSetMetaData來提供 public static void FillVector(String strSql) { int s; int fieldCount; try{ data.clear(); title.clear(); rs=st.executeQuery(strSql);//得到結果集 rsmd=rs.getMetaData();//得到結查集的原數據 fieldCount=rsmd.getColumnCount(); while(rs.next()) { row=new Vector(); for(int i=0;i60) row.add(new Boolean(true)); else row.add(new Boolean(false)); data.add(row); System.out.println(data.size()); } for(int i=0;i
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲一级| 精品国产欧美| 激情视频一区二区三区| 国产成人调教视频在线观看| 国产精品亚洲综合在线观看| 亚洲精品麻豆| 日韩精品三级| 日韩精品一级中文字幕精品视频免费观看| 欧美日韩亚洲在线观看| 亚洲国产专区校园欧美| 国产中文一区| 久久不射中文字幕| 婷婷亚洲精品| 国产精品第一国产精品| 精品视频一区二区三区在线观看| 精品不卡一区| 日产精品一区| 黄色亚洲在线| 日韩在线网址| 国产精品久久久久9999高清| 欧美精品二区| 免费福利视频一区二区三区| 日韩在线中文| 欧美精品黄色| 日韩福利视频导航| 国产精品一线天粉嫩av| 国产精品福利在线观看播放| 日韩免费福利视频| 亚洲激情中文| 欧美亚洲三级| 欧美羞羞视频| 亚洲中午字幕| 国产精品欧美大片| 国产麻豆久久| 热久久久久久久| 国产免费久久| 中文字幕在线看片| 久久精品国内一区二区三区水蜜桃| 91成人精品视频| 69精品国产久热在线观看| 91一区二区三区四区| 狠狠色狠狠色综合日日tαg| 欧美日韩亚洲国产精品| 日韩亚洲一区在线| 日av在线不卡| 精品理论电影在线| 99视频一区| 美女国产精品久久久| 国产精品av久久久久久麻豆网| 日韩不卡一区二区| 福利一区二区免费视频| 黄色不卡一区| 日本国产亚洲| 鲁鲁在线中文| 亚洲精品中文字幕99999| 日韩av在线中文字幕| 午夜在线播放视频欧美| 精品视频高潮| 免费久久99精品国产| 国产一区二区三区黄网站| 在线一区电影| 国产一区二区三区黄网站 | 欧美日韩精品一区二区三区视频| 91欧美在线| 亚洲精品成a人ⅴ香蕉片| 欧美韩日一区| 日韩一区二区三区精品视频第3页| 国内揄拍国内精品久久| 亚洲婷婷丁香| 亚洲一级少妇| 国产麻豆精品| 免费精品视频| 桃色av一区二区| 国产毛片精品| 免费美女久久99| 亚洲特级毛片| 精品日产乱码久久久久久仙踪林| 蜜桃伊人久久| 日本在线精品| 精品淫伦v久久水蜜桃| 日韩一区二区三区高清在线观看| 日韩国产欧美一区二区| 国产欧美高清| 亚洲精品日本| 99在线观看免费视频精品观看| 国产一区二区精品久| 日韩高清不卡一区| 亚洲欧美日韩一区在线观看| 久久久影院免费| 日韩综合一区| 国产精品亚洲欧美| 亚洲免费一区三区| 午夜久久tv| 久久婷婷丁香| 手机在线电影一区| 国产欧美日韩影院| 久久av一区| 91精品在线观看国产| 91欧美在线| 精品一区二区三区在线观看视频| 青青伊人久久| 日韩影片在线观看| 丝瓜av网站精品一区二区| 99精品视频精品精品视频| 91亚洲国产高清| 精品亚洲自拍| 精品一区二区三区免费看| 欧美成人一二区| 国产精品国码视频| 国产精品videossex久久发布| 日韩福利视频一区| 性色一区二区| 亚洲在线观看| 亚洲一区二区成人| 亚洲一区久久| 午夜亚洲精品| 蜜臀精品一区二区三区在线观看 | 久久久一二三| 午夜精品久久久久久久久久蜜桃| 国产成人免费视频网站视频社区| 国产精品亚洲欧美日韩一区在线| 日韩超碰人人爽人人做人人添| 国产一区二区高清| 91精品婷婷色在线观看| 久久久夜精品| 久久中文字幕av| 久久国产精品成人免费观看的软件| 色婷婷综合网| 女生影院久久| 久久高清免费| 久久成人精品| 日韩视频1区| 欧美久久香蕉| 九九九精品视频| 精品三级久久| 欧美日韩国产探花| 午夜一区在线| 丝瓜av网站精品一区二区| 免费观看久久久4p| 亚洲91在线| 国产精品久久久久久妇女| 国产精品麻豆久久| 久久人人97超碰国产公开结果| 99成人在线| 婷婷综合成人| 欧美激情在线精品一区二区三区| 成人污污视频| 欧美日韩精品免费观看视完整 | 国产v综合v| 欧美日韩国产一区二区三区不卡| 99国产一区| 蜜臀精品久久久久久蜜臀| 日韩高清一区| 精品一区二区三区免费看| 九九色在线视频| 欧美中文字幕| 国产伦乱精品| 色吊丝一区二区| 久久电影一区| 国产欧美日韩一区二区三区四区| 另类综合日韩欧美亚洲| 日韩精品第一区| 国产精品日本欧美一区二区三区| 日本不卡一区二区| 精品国产欧美| av一区二区高清| 久久亚洲风情| 国产精品v一区二区三区| 久久精品123| 亚洲精品成a人ⅴ香蕉片| 久久三级中文| 亚洲国产成人精品女人| 日本va欧美va精品| av最新在线| 免费视频最近日韩| 国产精品久久观看| 国产精品婷婷| 国产精品99精品一区二区三区∴ | 亚洲成人不卡| 亚洲精品成人一区| 91麻豆精品激情在线观看最新| 色综合五月天| 蜜臀久久久99精品久久久久久| 久久一区精品| 国产精品呻吟| 国产96在线亚洲| 视频一区视频二区在线观看| 久久不见久久见免费视频7| 米奇777超碰欧美日韩亚洲| 久久国产三级精品| 在线日韩电影| 国产三级精品三级在线观看国产| 成人精品天堂一区二区三区| 日韩国产91| 午夜国产精品视频| 热久久久久久| 国产在线不卡| 精品日韩一区| 日韩1区2区日韩1区2区| 久久在线视频免费观看|