您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 华北电力大学教学用ppt-07-高级图形用户界面组件
NCEPUSwing高级组件2019年11月24日星期日NCEPUSwing的高级组件树JTree表格JTable32312019年11月24日星期日NCEPUSwing的高级组件—表格JTable(表格)的主要功能是把数据以二维表格的形式显示出来。数据标题312019年11月24日星期日NCEPU表格(JTable)的构造方法JTable(VectorrowData,VectorcolumnNames)创建一个表格,显示向量中的数据getTable()获得表格的数据来源对象2019年11月24日星期日NCEPUSwing常用的组件—表格(JTable)JTable类常用的方法有:getModel()//获得表格的数据来源对象JTable(TableModeldm)//dm对象中包含了表格要显示的数据2019年11月24日星期日NCEPU下列两个构造方法,第一个参数是数据,第二个参数是表格第一行中显示的内容JTable(object[][]rowData,object[]columnNams);JTable(Vector[][]rowData,Vector[]columnNams);表格(JTable)2019年11月24日星期日NCEPU简单表格JTable(Object[][]rowData,Object[]columnNames)以一个默认表格模型来构建一个表格参数:rowData--表格中的单元格数据columnNames--列标题构建表格数据Objectdata[][]={{陈峰,男,newInteger(19),党员},{田一飞,男,newInteger(18),团员},{胡锦,女,newInteger(19),党员}};构建表格的列标题StringcolumnName[]={姓名,性别,年龄,政治面貌};建立带滚动条的表格JTabletable=newJTable(data,columnName);JScrollPanepane=newJScrollPane(table);importjavax.swing.*;importjava.awt.event.*;classTable{publicstaticvoidmain(Stringargs[]){Objectdata[][]={{陈峰,男,newInteger(19),党员},{田一飞,男,newInteger(18),团员},{胡锦,女,newInteger(19),党员}};StringcolumnName[]={姓名,性别,年龄,政治面貌};JTabletable=newJTable(data,columnName);table.setRowHeight(25);//设置行高JScrollPanepane=newJScrollPane(table);//添加滚动条JFramef=newJFrame();f.setSize(300,200);f.add(pane);f.setVisible(true);}}简单表格实例2019年11月24日星期日NCEPU表格JTable的数据模型JTable只能显示数据,通常将数据的存储和处理任务委托给他的表格数据模型来处理。表格数据模型必须实现TableModel接口。AbstractTableModel类对TableModel接口中大部分方法提供了具体实现。如继承该类,需要对其中若干方法进行实现。DefaultTableModel类继承了AbstractTableModel类并且实现了AbstractTableModel类中没有实现的方法。因此可以使用DefaultTableModel类来处理表格。以上两个类包含在javax.swing.table包中。2019年11月24日星期日NCEPUJTable的创建生成一个TableModel类型的对象来表示数据。用TableModel创建JTable对象。在JTable中添加滚动条面板。创建JTable表格可按四步进行:从AbstractTableModel类中继承得到,getColumnCount,getRowCount,getValueAt和getColumnName方法必须重写继承DefaultTableModel类或创建DefaultTableModel类的对象得到2019年11月24日星期日NCEPU方法说明DefaultTableModel(Object[][]data,Object[]columnNames)构造方法DefaultTableModel(Vectordata,VectorcolumnNames)构造方法addColumn(ObjectcolumnName,Object[]columnData)向模型中添加一列addRow(VectorrowData)向模型中添加一行intgetColumnCount()返回数据表中的列数StringgetColumnName(intcolumn)返回列名VectorgetDataVector()获得包含表格数据值的向量intgetRowCount()返回数据表格的行数ObjectgetValueAt(introw,intcolumn)返回单元格的值removeRow(introw)从模型中移走一行DefaultTableModel类importjavax.swing.*;importjava.awt.event.*;importjavax.swing.table.*;classTable{publicstaticvoidmain(Stringargs[]){Objectdata[][]={{陈峰,男,newInteger(19),党员},//表格中数据{田一飞,男,newInteger(18),团员},{胡锦,女,newInteger(19),党员}};StringcolumnName[]={姓名,性别,年龄,政治面貌};//表格列标题DefaultTableModeltableModel=newDefaultTableModel(data,columnName);JTabletable=newJTable(tableModel);//创建表格table.setRowHeight(25);//设置行高JScrollPanepane=newJScrollPane(table);//添加滚动条JFramef=newJFrame();f.setSize(300,200);f.add(pane);f.setVisible(true);}}应用DefaultTableModel创建表格2019年11月24日星期日NCEPUAbstractTableModel类方法说明StringgetColumnName(intcolumn)返回列名称intgetColumnCount()返回列数,抽象方法intgetRowCount();返回列数,抽象方法ObjectgetValueAt(introwIndex,intcolumnIndex)返回某单元格的值,抽象方法voidsetValueAt(ObjectaValue,introwIndex,intcolumnIndex)设置某单元格的值BooleanisCellEditable(introwIndex,intcolumnIndex)返回某单元格是否可编辑,默认不可编辑importjavax.swing.*;importjava.awt.event.*;importjavax.swing.table.*;classTableModelextendsAbstractTableModel{//数据模型类Objectdata[][]={{陈峰,男,newInteger(19),党员},{田一飞,男,newInteger(18),团员},{胡锦,女,newInteger(19),党员}};StringcolumnName[]={姓名,性别,年龄,政治面貌};publicintgetColumnCount(){//获得列数returncolumnName.length;}publicintgetRowCount(){//获得行数returndata.length;}publicObjectgetValueAt(introw,intcol){//获得某单元格returndata[row][col];}publicStringgetColumnName(intcol){//获得某列列标题returncolumnName[col];}}继承AbstractTableModel类创建表格2019年11月24日星期日NCEPUclassTableDemo{publicstaticvoidmain(Stringargs[]){TableModeltm=newTableModel();JTabletable=newJTable(tm);table.setRowHeight(25);//设置行高JScrollPanepane=newJScrollPane(table);//添加滚动条JFramef=newJFrame();f.setSize(300,200);f.add(pane);f.setVisible(true);}}继承AbstractTableModel类创建表格续上页2019年11月24日星期日NCEPU无法编辑单元格解决方法1)覆盖AbstractTableModel抽象类中的isCellEditable()方法,设置允许编辑单元格。publicbooleanisCellEditable(introwIndex,intcolumnIndex){returntrue;}2)覆盖AbstractTableModel抽象类中的setValueAt()方法,将改过的值存入表格中。publicvoidsetValueAt(Objectvalue,introw,intcol){data[row][col]=value;fireTableCellUpdated(row,col);}继承AbstractTableModel类创建表格的问题继承AbstractTableModel类创建可编辑的表格importjavax.swing.*;importjava.awt.event.*;importjavax.swing.table.*;importjava.awt.*;classTableModelextendsAbstractTableModel{//表格模型类Objectdata[][]={{陈峰,男,newInteger(19),党员},{田飞,男,newInteger(18),团员},{胡锦,女,newInteger(19),党员}};StringcolumnName[]={姓名,性别,年龄,政治面貌};publicintgetColumnCount(){returncolumnName.length;}publicintgetRowCount(){returndata.length;}publicObjectgetValueAt(introw,intcol){returndata[row][col];}publicStringgetColumnName(intcol){returncolumnName[col];}publicbooleanisCellEditable(introwIndex,intcolumnIndex){returntrue;}publicvoidsetValueAt(Objectvalue,introw,intcol){data[row][col]=value;fireTableCellUpdated(row,col);}}classTableDemoimplementsActionListener{//表格类JTabletable;JButtonb;TableModeltm;TableDemo(){tm=newTableMod
本文标题:华北电力大学教学用ppt-07-高级图形用户界面组件
链接地址:https://www.777doc.com/doc-1842237 .html