无法更新子JFrame中的结果表

时间:2011-07-09 10:37:41

标签: java swing jframe

我有一个互动的主JFrame,即用户设置不同的选项。按下“运行”按钮后,配置文件将根据用户首选项创建,并传递给程序的下一部分。完成一些计算并将结果写入文件。程序的第三部分读取结果文件并对其进行总结。

然后打开子JFrame,其中包含带有多个JPanel的JTabbedPane。每个JPanel都显示不同的JTable及相关信息。子JFrame具有DISPOSE_ON_CLOSE方法,否则两个JFrame都将被终止。

所以问题是,如果用户更改了一些选项,再次运行程序,新的子JFrame实际上并不是新的 - 它只显示第一次运行的信息。我试过了:

invalidate()
revalidate()
repaint()

没有任何帮助。我不知道问题出在哪里。我很确定在更改选项后会读取新的结果文件,因为它会在控制台中打印。

可能是其他重要的事情是表格是先创建的,而子JFrame是最新的。

1 个答案:

答案 0 :(得分:1)

可能是因为您的代码中有某处:

table = new JTable(...);

这不会将表添加到GUI。您应该通过执行以下操作来刷新现有表中的数据,而不是创建新表:

TableModel model = ....
table.setModel( model );

这将导致数据自动重新绘制。不需要invalidate(),revalidate()或repaint()。