亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

初次感覺java面向?qū)ο蟮乃枷?/h1>
瀏覽:95日期:2024-06-17 15:10:31
內(nèi)容: /*創(chuàng)建了這個例子,初次感覺啦java的面向?qū)ο蟮木瑁琷table只用來顯示,而使用模板來改變jtable的屬性,實現(xiàn)了表格的顯示與設(shè)置分離*/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數(shù)據(jù) javax.swing.JScrollPane js; JButton but; JTextField jt1=null; JTextField jt2=null; JTextField jt3=null; JTextField jt4=null; JTextField jt5=null; //Object數(shù)組構(gòu)造jtable Object[][] a=new Object[2][3]; Object[] b={'a','b','c'}; //Object數(shù)組構(gòu)造jtable Object[][] aa={{'a','b','c'}}; //vector數(shù)組構(gòu)造jtable Vector va,vb,vc; //實現(xiàn)功能 //1)將Object數(shù)組構(gòu)造的jtable添加到窗體上去 //2)將JTable的第一列的屬性改為文本框,第二列的屬性改變?yōu)橄吕?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(); } //實現(xiàn)功能 //1)使用Object模板來創(chuàng)建JTable //2) 實現(xiàn)JTable的表格邊框的隱藏和顯示b及指定列的隱藏和顯示 void addObjectMd() { pnla=new JPanel(); jt1=new JTextField(10); but=new JButton('設(shè)置行高'); 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); //使用模板必須數(shù)組里有值 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模板類 { //定義表中的一條數(shù)據(jù),相當(dāng)于一個一維數(shù)組 vc=new Vector(); vc.add('va'); vc.add('vb'); vc.add('vc'); vc.add(new Boolean(false)); va=new Vector(); //將產(chǎn)生的數(shù)據(jù)增加到va中去 va.add(vc); vb=new Vector(); //定義JTable的標(biāo)題 vb.add('va'); vb.add('vb'); vb.add('vc'); vb.add('vd'); mdb=new TestModelb(va,vb); table=new JTable(mdb); //表格已構(gòu)造完畢 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; //獲取數(shù)據(jù)庫中的行數(shù)據(jù) vb=DataBase.title; //獲取數(shù)據(jù)庫中的標(biāo)題 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('設(shè)置行高')) { int h=Integer.parseInt(jt1.getText());//得到輸入的值 if(h>0) table.setRowHeight(h);//設(shè)置table的行高 } }}//處理CheckBox 的選中事件 private class MyItemListener implements ItemListener { public void itemStateChanged(ItemEvent e) { //先判斷事件源 再判斷事件源是否被選中 if(e.getSource()==jboxa) if(jboxa.isSelected()) { //設(shè)置是否顯示表格線 table.setShowHorizontalLines(true); table.setShowVerticalLines(true); } else { table.setShowHorizontalLines(false); table.setShowVerticalLines(false); } //是否刪除分數(shù)列 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創(chuàng)建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列的數(shù)據(jù) } public Class getColumnClass(int c) { //將不同的數(shù)據(jù)類型 //以對應(yīng)的形式來顯示,大家可以比較這個例子中的顯示 //和前幾個例子的區(qū)別 return data[0][c].getClass(); } //設(shè)置r行,c列的值為 value //當(dāng)用戶在修改JTable中的數(shù)據(jù)時,能自動調(diào)用,并修改data中的數(shù)據(jù) public void setValueAt(Object value, int r,int c) { data[r][c]=value; }}//使用Vector創(chuàng)建jtable模板//對于JTable來說,它是一個二維結(jié)構(gòu),表中的整個數(shù)據(jù)由一個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) //得到每一列的數(shù)據(jù) { Vector v=(Vector)a.get(c);//取出可變數(shù)組中的數(shù)據(jù) return v.get(b); //得到每一行沒一列的值 } public Class getColumnClass(int c) { Vector v=(Vector)a.get(0); return v.get(c).getClass(); //將字符串變成各中類型的數(shù)據(jù) } public boolean isCellEditable(int r,int c) { //除了第二列不能修改 //其它都可能修改 if(c==2) return false; return true; } //在自定義的TableModel中重寫了AddRow方法 //向data中增加一個Vector,相當(dāng)于增加了一條記錄 public void AddRow(Vector row) { a.add(row); this.fireTableDataChanged();//通知所有偵聽器,表的所有行單元格值可能已更改,如果不調(diào)用,將不會更改 } //???????????????????如何實現(xiàn)刪除行呢}/*// 在pubs數(shù)據(jù)庫中建一個表studentscreate table students(st_xh varchar(10),st_name varchar(10),st_age int)insert into studentsvalues('1000 0001','小王',25) 再建一個Odbc數(shù)據(jù)源test 聯(lián)結(jié)pubs*/ class DataBase //cz數(shù)據(jù)庫類 { public static Connection conn=null;//這是一個連接對象 public static ResultSet rs=null;//這是一個記錄集對象 public static Statement st=null;//這是一個語名對象 public static PreparedStatement pst=null;//執(zhí)行帶參數(shù)據(jù)的語句 public static CallableStatement cst=null;//執(zhí)行存儲過程 public static ResultSetMetaData rsmd=null;//得到記錄集的原信息 public static Vector data,title,row; //在構(gòu)造函數(shù)中去聯(lián)結(jié)數(shù)據(jù)庫 public DataBase() { data=new Vector(); title=new Vector(); //必須使用異常捕獲,不然程序?qū)箦e 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(); } } //根據(jù)strSql來向兩個集合增加數(shù)據(jù) //data中存放表中的每條記錄,每條記錄也放入一個Vector中 //title中存放表的列的信息,根據(jù)ResultSetMetaData來提供 public static void FillVector(String strSql) { int s; int fieldCount; try{ data.clear(); title.clear(); rs=st.executeQuery(strSql);//得到結(jié)果集 rsmd=rs.getMetaData();//得到結(jié)查集的原數(shù)據(jù) 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
標(biāo)簽: Java
相關(guān)文章:
1. Java面向?qū)ο蠡A(chǔ)教學(xué)(三)2. Effective java學(xué)習(xí)筆記4:避免創(chuàng)建重復(fù)對象3. js fill函數(shù)填充數(shù)組或?qū)ο蟮慕鉀Q方法4. JavaScript中的Proxy對象5. 真正面向?qū)ο缶幊?PHP5.01發(fā)布6. JS訪問對象兩種方式區(qū)別解析7. JavaScript 防篡改對象的用法示例8. PHP 面向?qū)ο蟪绦蛟O(shè)計之類屬性與類常量實現(xiàn)方法分析9. SpringBoot整合阿里云OSS對象存儲服務(wù)的實現(xiàn)10.

主站蜘蛛池模板: 美女亚洲综合 | 中文字幕视频网站 | 欧美日韩视频一区二区 | 色碰碰| 日韩a级毛片免费视频 | 中文字幕曰韩一区二区不卡 | 18lxxlxx日本 | 久久99精品久久久久久秒播放器 | 久久久久久久综合色一本 | 婷婷的久久五月综合先锋影音 | 免费视频 久久久 | 在线亚洲综合 | 俄罗斯小屁孩cao大人免费 | 91欧美在线视频 | 三级视频网站 | 俄罗斯毛片免费大全 | 欧美三级网站 | 九九精彩视频在线观看视频 | 操欧美美女 | 午夜宅男在线永远免费观看网 | 国产亚洲毛片在线 | 日韩美女一级片 | 99久久免费看国产精品 | 久久―日本道色综合久久 | 亚洲午夜在线观看 | 精品国产一二三区在线影院 | 欧美aav| 久久香蕉国产线看观看式 | 欧美视频一级 | 欧美视频久久 | 国产美女拍拍拍在线观看 | 天堂入口| 手机在线观看精品国产片 | 香蕉国产人午夜视频在线观看 | 色综久久 | 国产精品亚洲专区一区 | 国产成人精品免费视频大全办公室 | 国产成人深夜福利短视频99 | 久久精品道一区二区三区 | 国产97公开成人免费视频 | 国产国语一级毛片全部 |