javatable类(Java中TableRowSorter(model)应该引用什么类)
本文目录
- Java中TableRowSorter(model)应该引用什么类
- ttable怎么在java中编写
- java编程的table类如何实现保存操作
- Java程序:创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以及以下几个
Java中TableRowSorter(model)应该引用什么类
javax.swing.table 类 TableRowSorter《M extends TableModel》java.lang.Object javax.swing.RowSorter《M》 javax.swing.DefaultRowSorter《M,Integer》 javax.swing.table.TableRowSorter《M》类型参数:M - 模型的类型,必须为 TableModel 的一个实现--------------------------------------------------------------------------------public class TableRowSorter《M extends TableModel》extends DefaultRowSorter《M,Integer》RowSorter 的一个实现,它使用 TableModel 提供排序和过滤操作。下面的例子显示了向 JTable 添加排序操作: TableModel myModel = createMyTableModel();JTable table = new JTable(myModel);table.setRowSorter(new TableRowSorter(myModel)); 此类将完成所有连线操作(wiring),从而当用户做出适当的行为(比如单击列标题)时,表将进行直观的排序。 JTable 的基于行的方法和 JTable 的选择模型引用视图而不是底层模型。因此,有必要在两者之前进行转换。例如,要获取基于 myModel 的选择,需要转换索引: int selection = table.getSelectedRows();for (int i = 0; i 《 selection.length; i++) {selection); } 类似地,要在基于底层模型坐标的 JTable 中选择一行,执行以下相反的操作: table.setRowSelectionInterval(table.convertRowIndexToView(row),table.convertRowIndexToView(row)); 前一个例子假定不能进行过滤操作。如果能够进行过滤,则对于在视图中不可见的位置,convertRowIndexToView 将返回 -1。 TableRowSorter 使用 Comparator 进行比较。下文定义了如何为列选择 Comparator: 如果已经通过 setComparator 方法为列指定了 Comparator,则使用它。 如果 getColumnClass 返回的列类是 String,则使用 Collator.getInstance() 返回的 Comparator。 如果列类实现 Comparable,则使用调用 compareTo 方法的 Comparator。 如果已经指定了 TableStringConverter,则使用它将值转换为 String,然后使用 Collator.getInstance() 返回的 Comparator。 否则,先在对象上调用 toString,再对结果调用 Collator.getInstance(),使用所返回的 Comparator。 除了排序操作,TableRowSorter 还提供过滤操作。使用 setFilter 方法指定过滤器。下例将只显示包含字符串“foo”的行: TableModel myModel = createMyTableModel();TableRowSorter sorter = new TableRowSorter(myModel);sorter.setRowFilter(RowFilter.regexFilter(".*foo.*"));JTable table = new JTable(myModel);table.setRowSorter(sorter); 如果底层模型结构发生了更改(调用了 modelStructureChanged 方法),则以下值将被重置为其默认值:列的 Comparator,当前排序顺序以及每一列是否可排序。默认的排序顺序是自然排序(与模型相同),并且默认情况下列是可排序的。 TableRowSorter 有一个形式类型参数:模型的类型。传入完全对应于模型的类型允许基于模型进行过滤,而无需强制转换。有关此情况的例子,请参阅 RowFilter 文档。 警告: DefaultTableModel 返回 Object 的列类。这种情况下将使用 toString 完成所有比较。这将产生不必要的昂贵开销。如果列只包含一种值类型,比如 Integer,则应该重写 getColumnClass 并返回适当的 Class。这将明显增强此类的性能。
ttable怎么在java中编写
JTable 有很多用来自定义其呈现和的工具,同时提供了这些功能的默认设置,从而可以轻松地设置简单表。
设计使用 JTable 的应用程序时,务必要注意用来表示表数据的数据结构。DefaultTableModel 是一个模型实现,它使用一个 Vector 来存储所有单元格的值,该 Vector 由包含多个 Object 的 Vector 组成。除了将数据从应用程序复制到 DefaultTableModel 中之外,还可以用 TableModel 接口的方法来包装数据,这样可将数据直接传递到 JTable,如上例所示。这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。在决定使用 AbstractTableModel 还是使用 DefaultTableModel 方面有一个好的实践经验,即在创建子类时使用 AbstractTableModel 作为基类,在不需要创建子类时则使用 DefaultTableModel。
下面给个例子
import java.awt.BorderLayout;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.WindowConstants;import javax.swing.table.JTableHeader;/** * @ClassName: JtableCellTips * @Description: Description of this class * @author 《a href="mailto:zxt.com"》zxt《/a》于 2012-11-15 上午09:25:28 */public class JtableCellTips { private JTable table; String namestooltip = {"wow ncp name", "some word" }; public JtableCellTips() { JFrame f = new JFrame(); f.setSize(300, 200); Object playerInfo = { {"提里奥.弗丁", "种族不代表荣耀,我见过最高尚的兽人,也见过最卑劣的人类。" }, {"莫格莱尼", "生命本身毫无意义,只有死亡才能让你了解人性的真谛。" } }; String Names = {"姓名", "台词" }; table = new JTable(playerInfo, Names) { public String getToolTipText(MouseEvent e) { int row = table.rowAtPoint(e.getPoint()); int col = table.columnAtPoint(e.getPoint()); String tiptextString = null; if (row 》 -1 && col 》 -1) { Object value = table.getValueAt(row, col); if (null != value && !"".equals(value)) tiptextString = value.toString();// 悬浮显示单元格内容 } return tiptextString; } protected JTableHeader createDefaultTableHeader() { return new JTableHeader(columnModel) { public String getToolTipText(MouseEvent e) { String tip = null; java.awt.Point p = e.getPoint(); int index = columnModel.getColumnIndexAtX(p.x); int realIndex = columnModel.getColumn(index).getModelIndex(); return namestooltip; } }; } }; // 悬浮提示单元格的值 // table.addMouseMotionListener(new MouseAdapter(){ // public void mouseMoved(MouseEvent e) { // int row=table.rowAtPoint(e.getPoint()); // int col=table.columnAtPoint(e.getPoint()); // if(row》-1 && col》-1){ // Object value=table.getValueAt(row, col); // if(null!=value && !"".equals(value)) // table.setToolTipText(value.toString());//悬浮显示单元格内容 // else // table.setToolTipText(null);//关闭提示 // } // } // }); JScrollPane scrollPane = new JScrollPane(table); f.getContentPane().add(scrollPane, BorderLayout.CENTER); f.setTitle("单元格悬浮提示"); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.setVisible(true); } public static void main(String args) { new JtableCellTips(); }}
你可以翻下帮助,里面有好多模型可用,有问题也可以再追问或私聊,good luck!~
java编程的table类如何实现保存操作
1、 类Vector: 类Vector是Java的历史集合类,隶属于java.util包。它包装了异构链表和数组杂合体,具有以下两个特点: * 向量是异构的,不要求每个元素的类型相同,向量中可以混合多种对象类型; * 向量是数组杂合体,因为它们可以在增加元素时动态增大。 其异构性正好符合数据库记录中属性类型不一的特点,而其动态性也正好符合数据库查询时,结果集记录个数不定的特点。 类Vector定义如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 实现了向量成员的查找、新增、删除等方法。如:add(Object obj)可方便地加入一个对象;get(int index)可方便地得到向量中的一个对象;remove(Object obj)。则可方便地删除向量中一个对象。· 2、 类JTable: JTable组件是Swing组件中比较复杂的小件,隶属于javax.swing包,它能以二维表的形式显示数据。类JTable定义如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 类JTable在显示数据时具有以下特点: * 可定制性:可以定制数据的显示方式和状态; * 异构性:可以显示不同类型的数据对象,甚至包括颜色、图标等复杂对象; * 简便性:可以以缺省方式轻松地建立起一个二维表。 其可定制性可满足不同用户和场合的要求,异构性也正好符合数据库访问结果集中属性类型不一的特点。类JTable提供了极为丰富的二维表格操作方法,如设置状态、显示方式、选择行列等,在此不一一赘述。 使用类JTable显示数据之前,必须根据情况生成定制模型、单元绘制器或单元器。类AbstractListModel用来定制用户自己的数据模型,这个类在后面要介绍。TableCellRenderer接口用来定制单元绘制器,TableCellEditor接口用来定制单元器,这两个接口主要用于颜色对象的处理上,在示例中没有用到,不做过多说明。· 3、 类AbstractTableModel: 类AbstractTableModel是一个抽象类,没有完全实现,不能实例化,使用时必须在程序中实现方法。它隶属于javax.swing.table 。类定义如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…} 类AbstractTableModel提供了TableModel接口中绝大多数方法的缺省实现。TableModel接口定义了JTable 的基础数据结构。用户要生成自己的数据模型,本来可以通过实现TableModel接口中所有方法来满足要求,但管理听众表的功能对于所有数据模型是共同的,所以在javax.swing.table中又定义了类AbstractTableModel来处理这个工作。它既管理听众表,又为生成TableModelEvents事件并委托给听众提供了便利。 要想生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column); 至此,我们可以建立一个简单二维表(5×5),实现方法如下: TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { return 5;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table);· 二、 数据库及其连接方法简介: 示例采用Sybase数据库系统,数据库存放在数据库服务器中。路径为:D:/WORKER,数据库名为:worker.dbf。具有以下字段: 字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT 要连接此数据库,需使用java.sql包中的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序, 设置登记和数据库访问登录超时等方法。具体连接方法如下: 第一步:定位、装入和链接SybDriver类; driver="com.sybase.jdbc.SybDriver"; SybDriver sybdriver=(SybDriver)Class.forName(driver).newInstance(); 第二步:注册SybDriver类; DriverManager.registerDriver(sybdriver); 第三步:取得连接(SybConnection)对象引用。 user="sa"; password=""; url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"; SybConnection connection=(SybConnection)DriverManager.getConnection (url,user,password); 建立完连接后,即可通过Statement接口进行数据库的查询与更改。· 三、 实现方法: 限于篇幅,在此只给出核心代码,包引入、界面处理、变量定义等部分不再介绍。 第一步:对象声明。 AbstractTableModel tm;//声明一个类AbstractTableModel对象 JTable jg_table;//声明一个类JTable对象 Vector vect;//声明一个向量对象 JScrollPane jsp;//声明一个滚动杠对象 String title={"职工号","职工名","性别","出生日期","工资"}; //二维表列名 第二步:定制表格。 1、实现抽象类AbstractTableModel对象tm中的方法: vect=new Vector();//实例化向量 tm=new AbstractTableModel(){ public int getColumnCount(){ return title.length;}//取得表格列数 public int getRowCount(){ return vect.size();}//取得表格行数 public Object getValueAt(int row,int column){ if(!vect.isEmpty()) return ((Vector)vect.elementAt(row)).elementAt(column); else return null;}//取得单元格中的属性值 public String getColumnName(int column){ return title;}//设置表格列名 public void setValueAt(Object value,int row,int column){} //数据模型不可,该方法设置为空 public Class getColumnClass(int c){ return getValueAt(0,c).getClass(); }//取得列所属对象类 public boolean isCellEditable(int row,int column){ return false;}//设置单元格不可,为缺省实现 }; 2、定制表格: jg_table=new JTable(tm);//生成自己的数据模型 jg_table.setToolTipText("显示全部查询结果");//设置帮助提示 jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //设置表格调整尺寸模式 jg_table.setCellSelectionEnabled(false);//设置单元格选择方式 jg_table.setShowVerticalLines(true);//设置是否显示单元格间的分割线 jg_table.setShowHorizontalLines(true); jsp=new JScrollPane(jg_table);//给表格加上滚动杠 第三步:显示查询结果。 1、 连接数据库:第二部分已给出。 2、 数据库查询: Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery("select * from worker"); 3、 显示查询结果: vect.removeAllElements();//初始化向量对象 tm.fireTableStructureChanged();//更新表格内容 while(rs.next()){ Vector rec_vector=new Vector(); //从结果集中取数据放入向量rec_vector中 rec_vector.addElement(rs.getString(1)); rec_vector.addElement(rs.getString(2)); rec_vector.addElement(rs.getString(3)); rec_vector.addElement(rs.getDate(4)); rec_vector.addElement(new Float(rs.getFloat(5))); vect.addElement(rec_vector);//向量rec_vector加入向量vect中 } tm.fireTableStructureChanged();//更新表格,显示向量vect的内容。
Java程序:创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以及以下几个
package com.kaylves;public class Table {private String tableName;//名称 private int weight; //重量 private int length;//长度 private int height;//高度 private int width; //宽度 public Table(){tableName="";}public Table(String tableName,int weight,int length,int height,int width){this.tableName=tableName;this.weight=weight;this.length=length;this.height=height;this.width=width;}public int getArea(){return length*width;} public void display(){System.out.println("桌名称:"+this.tableName);System.out.println("重量:"+this.weight);System.out.println("长度:"+this.length);System.out.println("高度:"+this.height);System.out.println("宽度:"+this.width);System.out.println("面积:"+this.getArea());} public void changeWeight(int w){this.weight=w;} public static void main(String args){Table table = new Table("小桌子",20,50,20,20);int area=table.getArea();table.changeWeight(30);table.display();}}
更多文章:
三星显卡驱动官方下载(请问三星NP-Q470CH的显卡驱动下载地址是什么)
2024年4月13日 23:15
投资1000元3天赚500(如果投入1000元只挣500的生意做得过吗)
2024年8月12日 22:41
我的世界国际版下载免费手机版(我的世界国际服恐怖解密怎么下载手机版)
2024年7月1日 18:25