刷新JTable中的对象[] []后的数据已经改变 [英] Reload JTable's Object[][] after data has changed
问题描述
我想知道是否有可能刷新表的GUI当对象[] []
最初用来填充它已经改变了。
I am wondering if it is possible to refresh a Table's GUI when the Object[][]
used to initially populate it has changed.
Object[][] calculationsTableData;
public Interface() {
...
analysisPanel.add(calculationsTable());
...
}
JScrollPane calculationsTable() {
populateCalculationsTableData();
...
calculationsTable = new JTable(calculationsTableData, calculationsColumnNames);
...
}
void populateCalculationsTableData(){
Object[][] temp = new Object[x.numsSize][7];
for (int i = 0; i < x.numsSize; i++) {
temp[i][0] = df.format(x.nums[i]);
...
}
calculationsTableData = temp;
}
populateCalculationsTableData()时,x对象已更改为重新填充
被称为 calculationsTableData code>
重绘()
和重新验证()
方法不会出现有效在这种情况下,并没有做 fireTableDataChanged()
,因为这不是一个表的模式。
repaint()
and revalidate()
methods do not appear to be effective in this scenario and neither does fireTableDataChanged()
as this is not a table model.
推荐答案
默认情况下的 JTable中创建<击> 的DefaultTableModel
罢工>的 AbstractTableModel上 [ 1 ] 如果执行没有表模型明确地设定。如果表需要更新你有它的模型工作。
By default JTable creates a new instance of AbstractTableModel [1] implementation if no table model is explicitely set. If the table needs to be updated you have to work with its model.DefaultTableModel
void populateCalculationsTableData() {
...
calculationsTableData = temp;
TableModel model = new DefaultTableModel(calculationsTableData, calculationsColumnNames);
calculationsTable.setModel(model);
}
或者你可以...
使用创建表的DefaultTableModel
:
TableModel model = new DefaultTableModel(calculationsTableData, calculationsColumnNames);
calculationsTable = new JTable(model);
演员表模型的DefaultTableModel
并设置其数据和列是这样的:
Cast the table model as DefaultTableModel
and set its data and columns like this:
void populateCalculationsTableData() {
...
calculationsTableData = temp;
DefaultTableModel model = (DefaultTableModel)calculationsTable.getModel();
model.setDataVector(calculationsTableData, calculationsColumnNames);
}
推荐阅读
- JTable的(对象[] [] rowData,对象[] COLUMNNAMES)
- 的DefaultTableModel#setDataVector(对象[] [] dataVector中,对象[] columnIdentifiers)
- 如何使用表
- JTable(Object[][] rowData, Object[] columnNames)
- DefaultTableModel#setDataVector(Object[][] dataVector, Object[] columnIdentifiers)
- How to Use Tables
Suggested readings
[ 1 ] :经过检查 JTable的(对象[] [] rowData,对象[] COLUMNNAMES)
来源$ C $ C我已经意识到,没有的DefaultTableModel
创建而是一个新的匿名内部类从 AbstractTableModel上
而是延伸
[1]: After checking JTable(Object[][] rowData, Object[] columnNames)
source code I've realized that no DefaultTableModel
is created but a new anonymous inner class extending from AbstractTableModel
instead.
这篇关于刷新JTable中的对象[] []后的数据已经改变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!