JTable 在 运行 时间更新
JTable updating in run time
有没有办法在 运行 时间内不使用构造函数来更新 JTable?
我有一个已添加到我的 JPanel 中的 JTable,但我希望能够稍后在代码中定义列和数据,而不是立即在构造函数方法中定义,有没有办法这个?
JPanel jp = new JPanel();
JTable table = new JTable();
jp.add(table);
此外,有没有办法将二维数组列表转换为二维对象数组,以便我可以在 JTable 中使用它?
是的,您可以在运行时设置 table 的内容。见 JTable.setModel(TableModel)
Also, is there a way to convert a dimensional array list into a 2
dimensional object array so I can use it in the JTable?
我不确定你所说的 "dimensional array list" 是什么意思,但你可以将数据结构转换为标准 TableModel
实现,如 DefaultTableModel ,或者编写一个包装器 class 来实现TableModel
界面。包装器 class 将直接从您的数据结构中读取数据,并通过 TableModel
.
中定义的方法将其元素公开给 JTable
I want to be able to define the columns and data at a later point in the code instead of immediately in the constructor method, is there a way to do this?
使用 TableModel
To manage the data. See the "default" implementation DefaultTableModel
。您可以随时使用 JTable#setModel
并传递新的 TableModel
。
JTable table = new JTable();
...
// Some time later
String[] headers = ...
Object[][] data = ...
DefaultTableModel model = new DefaultTableModel();
table.setModel(model);
或者您可以使用模型创建 table,并在任何时候调用模型的方法,例如(在 DefaultTableModel
的情况下)、setColumnIdentifiers
、addRow
, setDataVector
String[] headers = ...
DefaultTableModel model = new DefaultTableModel(headers, 0);
JTable table = new JTable(model);
...
// Some time later
Object[] row = ...
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(row);
String[] newHeaders = ...
model.setColumnIdentifiers(newHeaders);
"Also, is there a way to convert a dimensional array list into a 2 dimensional object array so I can use it in the JTable?"
我从没听过这个词"dimensional array list"。但是如果你想添加一个 ArrayList<String>
作为一行,你可以简单地调用 list.toArray
并向 DefaultTableModel
添加一行。如果是 ArrayList<YourType>
,您可能需要创建自定义 table 模型实现。 (见下面的link)
查看更多信息:
您可以在运行时使用 DefaultTableModel
的 addRow
方法向 table 添加数据。并使用 fireTableDataChanged
通知您的 JTable
更新它的 UI。 Document here
有没有办法在 运行 时间内不使用构造函数来更新 JTable?
我有一个已添加到我的 JPanel 中的 JTable,但我希望能够稍后在代码中定义列和数据,而不是立即在构造函数方法中定义,有没有办法这个?
JPanel jp = new JPanel();
JTable table = new JTable();
jp.add(table);
此外,有没有办法将二维数组列表转换为二维对象数组,以便我可以在 JTable 中使用它?
是的,您可以在运行时设置 table 的内容。见 JTable.setModel(TableModel)
Also, is there a way to convert a dimensional array list into a 2 dimensional object array so I can use it in the JTable?
我不确定你所说的 "dimensional array list" 是什么意思,但你可以将数据结构转换为标准 TableModel
实现,如 DefaultTableModel ,或者编写一个包装器 class 来实现TableModel
界面。包装器 class 将直接从您的数据结构中读取数据,并通过 TableModel
.
JTable
I want to be able to define the columns and data at a later point in the code instead of immediately in the constructor method, is there a way to do this?
使用 TableModel
To manage the data. See the "default" implementation DefaultTableModel
。您可以随时使用 JTable#setModel
并传递新的 TableModel
。
JTable table = new JTable();
...
// Some time later
String[] headers = ...
Object[][] data = ...
DefaultTableModel model = new DefaultTableModel();
table.setModel(model);
或者您可以使用模型创建 table,并在任何时候调用模型的方法,例如(在 DefaultTableModel
的情况下)、setColumnIdentifiers
、addRow
, setDataVector
String[] headers = ...
DefaultTableModel model = new DefaultTableModel(headers, 0);
JTable table = new JTable(model);
...
// Some time later
Object[] row = ...
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(row);
String[] newHeaders = ...
model.setColumnIdentifiers(newHeaders);
"Also, is there a way to convert a dimensional array list into a 2 dimensional object array so I can use it in the JTable?"
我从没听过这个词"dimensional array list"。但是如果你想添加一个 ArrayList<String>
作为一行,你可以简单地调用 list.toArray
并向 DefaultTableModel
添加一行。如果是 ArrayList<YourType>
,您可能需要创建自定义 table 模型实现。 (见下面的link)
查看更多信息:
您可以在运行时使用 DefaultTableModel
的 addRow
方法向 table 添加数据。并使用 fireTableDataChanged
通知您的 JTable
更新它的 UI。 Document here