Java 如何";刷新“;当帧B的执行结束时,一个JTable(在帧a中)?
我正在使用JFrame创建一个Java项目 我已经创建了一个JFrameJava 如何";刷新“;当帧B的执行结束时,一个JTable(在帧a中)?,java,jframe,jtable,jbutton,actionlistener,Java,Jframe,Jtable,Jbutton,Actionlistener,我正在使用JFrame创建一个Java项目 我已经创建了一个JFramea(在类主面板中),其中包含一个扩展JTable的myTable tbl对象(公共类myTable扩展JTable)。 我这样做是因为这个扩展必须有一个公共方法来填充表tbl从DB获取值。 每次启动项目时都会填充此表 框架A还包含一个JButton(JButton b_partita)。 此组件(b_partita)使用以下命令启动新的JFrameb(另一个“类aggiungiPartita实现ActionListener”
a
(在类主面板中
),其中包含一个扩展JTable的myTable tbl
对象(公共类myTable扩展JTable
)。
我这样做是因为这个扩展必须有一个公共方法来填充表tbl
从DB获取值。
每次启动项目时都会填充此表
框架A
还包含一个JButton(JButton b_partita
)。
此组件(b_partita
)使用以下命令启动新的JFrameb
(另一个“类aggiungiPartita实现ActionListener
”):
框架B
主要用于填充我的数据库。
如果一切顺利,当我按下B
中的save
按钮时,JFrame将自动关闭
问题是:
是否有办法在B结束后立即“刷新”表格tbl
(在a中)活动
谢谢大家,,
Stefano当您按“保存”并(我假设)将新数据保存到数据库时,您需要通知表底层数据已更改
从您的描述看来,您已经扩展了JTable
,以便在构建时从数据库中填充数据。这不是你想做的。相反,您需要创建自己的表模型,该模型实现在请求时获取数据的方法。创建类的对象,然后将其传递给JTable
构造函数。您很少需要扩展JTable
类本身。有关如何执行此操作的详细信息,请参阅
我建议您的表模型类扩展AbstractTableModel
,因为这会为您做很多工作。它提供了一个fireTableDataChanged
方法(以及更细粒度的示例),用于通知表它应该刷新自己
如果您正在实现自己的模型,而没有扩展抽象模型,那么需要做更多的工作。您需要使用适当构造的
tablemodeleevent
调用所有表模型侦听器的tableChanged
方法 使用模态对话框;使用某种观察者模式使用SwingWorker
在后台填充表格模型,然后
b_partita.addActionListener(new aggiungiPartita());