出于某种原因,调用此JTable时没有任何变化(此方法在用户提交SQL查询后更新JTable)。
吉文斯: 验证dataVector和columnNamesVector是否正确填充。 JTable是一个私有类变量。
private void updateData() {
updateDataVariables();
table = new JTable(dataVector, columnNamesVector)
{
@SuppressWarnings({ "unchecked", "rawtypes" })
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
}
有什么想法吗?
答案 0 :(得分:4)
将对象与参考变量混淆是一个常见的初学者的谬论,但你需要明白它们是截然不同的。当你这样称呼时:
table = new JTable(dataVector, columnNamesVector) {.....
您正在创建一个新的JTable对象并让表变量引用它,但是这对GUI显示的JTable 对象没有影响,表变量之前引用的一个。因此,您正在更改引用变量的属性,但保持原始对象不变。
解决方案:您不应该创建新的JTable,而应该创建一个新的TableModel,然后将该TableModel放入现有的可视化JTable中。您可以通过调用表格上的setModel(newModel)
来更改表格的模型。
编辑:或者正如wolfcastle所说,你可以更新现有的TableModel,而不是重新创建一个。
答案 1 :(得分:2)
你需要告诉JTable模型中的数据是通过触发适当的事件来更新的。
请参阅此tutorial