gpt4 book ai didi

java - JTable 和构造函数参数

转载 作者:行者123 更新时间:2023-11-29 05:52:36 26 4
gpt4 key购买 nike

我正在学习如何在 Swing 中使用 JTables。我已经想出连接到数据库并检索结果集的方法。我还可以使用第一个选项(见下文)显示数据。

a) 我想确保我理解使用/传递 TableModel 与直接传递行和列的想法是能够使用 AbstractTableModel 中可用的内置方法; DefaultTableModel 和 ListTableModel 类。

b) 什么是自定义 TableModel?

到目前为止,我遇到了 4 种方法:

  1. 将列和行作为对象直接传递给 JTable 构造函数。

例如:

JTable tab = new JTable(Object [][] rows, Object[] cols);

2。从实现 AbstractTableModel 的类创建表模型。

例如:

MyModel model = new MyModel(Object[][] obj1, String[] header);

//MyModel is a class that extends AbstractTableModel.
//MyModel has an ArrayList<Object[]> to store obj1[]
//MyModel implements getRowCount(), getColumnCount() and
getValueAt(int rowIndex, int columnIndex) and also getColumnName(int index)

JTable tab = new JTable(model);

3.从实现 DefaultTableModel 的类创建表模型。

例如:

DefaultTableModel model = new DefaultTableModel(String data[][],String col[]);
(or)
DefaultTableModel model = DefaultTableModel(Vector data, Vector columnNames)

JTable table = new JTable(model);

4.ListTableModel

最佳答案

当您直接传递数据时,JTable 将在内部创建一个 DefaultTableModel,您可以通过调用 table.getModel() 获取它。

不同的 TableModel 具有不同的特性,您可以通过创建一个实现 TableModel 的类或扩展 AbstractTableModel(或 DefaultTableModel)来实现您自己的特性。这背后的想法是,您有时需要的不仅仅是原始表数据。

例如,如果你想为每一行附加一个对象:您可以编写一个 TableModel,它每行保存一个对象,并提供类似 Object getObject(int rowIndex)void setObject(int rowIndex, Object object) 的方法。为此,您需要在 TableModel 中保存一个额外的数组或列表,其中包含对象并且大小始终与行数相同。

另一个原因可能是表格模型在您滚动时加载行数据,或者您希望动态显示来自多个数据源的数据。

TableModel 不一定必须保存数据,它只是将数据提供给 JTable。

关于java - JTable 和构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com