Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何";刷新“;当帧B的执行结束时,一个JTable(在帧a中)?_Java_Jframe_Jtable_Jbutton_Actionlistener - Fatal编程技术网

Java 如何";刷新“;当帧B的执行结束时,一个JTable(在帧a中)?

Java 如何";刷新“;当帧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”

我正在使用JFrame创建一个Java项目

我已经创建了一个JFrame
a
(在
类主面板中
),其中包含一个扩展JTable的
myTable tbl
对象(
公共类myTable扩展JTable
)。 我这样做是因为这个扩展必须有一个公共方法来填充表
tbl
从DB获取值。 每次启动项目时都会填充此表

框架
A
还包含一个JButton(
JButton b_partita
)。 此组件(
b_partita
)使用以下命令启动新的JFrame
b
(另一个“
类aggiungiPartita实现ActionListener
”):

框架
B
主要用于填充我的数据库。 如果一切顺利,当我按下
B
中的
save
按钮时,JFrame将自动关闭

问题是:

是否有办法在B结束后立即“刷新”表格
tbl
(在a中)​​活动

谢谢大家,, Stefano

当您按“保存”并(我假设)将新数据保存到数据库时,您需要通知表底层数据已更改

从您的描述看来,您已经扩展了
JTable
,以便在构建时从数据库中填充数据。这不是你想做的。相反,您需要创建自己的表模型,该模型实现在请求时获取数据的方法。创建类的对象,然后将其传递给
JTable
构造函数。您很少需要扩展
JTable
类本身。有关如何执行此操作的详细信息,请参阅

我建议您的表模型类扩展
AbstractTableModel
,因为这会为您做很多工作。它提供了一个
fireTableDataChanged
方法(以及更细粒度的示例),用于通知表它应该刷新自己


如果您正在实现自己的模型,而没有扩展抽象模型,那么需要做更多的工作。您需要使用适当构造的
tablemodeleevent
调用所有表模型侦听器的
tableChanged
方法

使用模态对话框;使用某种观察者模式使用
SwingWorker
在后台填充表格模型,然后
b_partita.addActionListener(new aggiungiPartita());