用于显示和编辑常规的二维单元格表。 见How to Use Tables中的Java教程面向任务的文档和使用的例子 。具有许多功能,可以自定义其渲染和编辑,但为这些功能提供默认设置,以便可以轻松设置简单表。 例如,要设置包含10行和10列数字的表:
TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) { return Integer.valueOf(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table);
s通常放在 。 默认情况下, 将调整其宽度,以便不需要水平滚动条。 要允许水平滚动条, 请使用调用 。 请注意,如果您希望在独立视图中使用 (在之外)并希望显示标题,则可以使用获取它并单独显示它。
要启用行的排序和过滤,请使用 。 您可以通过以下两种方式之一设置行分拣机:
- 直接设置 。 例如: 。
- 将属性设置为 ,这样 为您创建 。 例如: 。
在设计使用应用程序时,值得密切关注将代表表格数据的数据结构。 是一个模型实现,它使用的 s s来存储单元格值。 除了将数据从应用程序复制到 ,还可以将数据包装在接口的方法中,以便数据可以直接传递到 ,如上例所示。 这通常会导致更高效的应用程序,因为模型可以自由选择最适合数据的内部表示。 决定是否使用或一个好的经验法则是使用作为创建子类的基类,而不需要子类时使用 。
源代码分发的演示区域中的“TableExample”目录提供了许多用法的完整示例,介绍了如何用于提供从数据库获取的数据的可编辑视图以及如何修改显示中的列使用专门的渲染器和编辑器。
使用整数来指示它显示的模型的行和列。 只需一个表格范围的单元格,并使用在绘画过程中从模型中检索值。 重要的是要记住,各种方法返回的列和行索引是以 (视图)表示的,并且不一定是模型使用的相同索引。
默认情况下,可以在重新排列列,以便视图的列以与模型中的列不同的顺序显示。 这根本不会影响模型的实现:当列重新排序时, 在内部维护列的新顺序并在查询模型之前转换其列索引。
因此,在编写 ,没有必要监听列重新排序事件,因为无论视图中发生了什么,都将在其自己的坐标系中查询模型。 在示例区域中,展示了一种排序算法,该算法正是利用这种技术来插入另一个坐标系,其中行的顺序被改变,而不是列的顺序。
类似地,当使用提供的排序和过滤功能时,底层不需要知道如何进行排序,而是将处理它。 使用基于行的方法与基础时,需要进行坐标转换。 基于的所有基于行的方法均以 ,其不一定与基础的方法相同。 例如,选择始终以因此在使用您需要使用或进行转换。 以下显示如何将坐标从转换为基础模型的坐标:
int[] selection = table.getSelectedRows(); for (int i = 0; i < selection.length; i++) { selection[i] = table.convertRowIndexToModel(selection[i]); } // selection is now in terms of the underlying TableModel
默认情况下,如果启用了排序,则将根据排序保留选择和变量行高。 例如,如果当前选择了第0行(就基础模型而言),则在排序行0之后,将选择基础模型。 视觉上选择可能会改变,但就底层模型而言,它将保持不变。 唯一的例外是模型索引不再可见或被删除。 例如,如果过滤掉模型中的第0行,则排序后选择将为空。
J2SE 5为添加了方法, 于访问一些常见的打印需求。 简单的新方法可以快速轻松地为您的应用程序添加打印支持。 此外,新的方法可用于更高级的打印需求。
对于所有类,可以使用和将对象与关联,并在指定条件下执行操作。
警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy 。
警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, 软件包中添加了对所有JavaBeans 长期存储的支持。 请参阅 。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/12102.html