我创建了一个具有面板p1的框架x1。加载x1时,会将复选框动态添加到p1。添加到p1的复选框的数量取决于满足特定条件的数据库表(t1)中的数据值的数量。
第x1帧上有一个按钮b1。当点击b1时,它显示另一个帧x2,其中可以修改数据库表t1的数据值。 x2中的按钮“更新”,更新t1以反映对其数据值所做的更改。
修改后,当x2关闭时,我希望自动更新第x1帧中的面板p1以反映对数据库所做的更改,即在x2中修改t1后,满足条件的数据值的数量可能会发生变化,p1上显示的复选框的数量也可能已更改。
如何从x2刷新并重新加载x1中面板p1的组件。
想知道是否有人可以帮我解决问题。在此先感谢并对问题中的文本加载感到抱歉。
In x2:
private void UPDATEActionPerformed(java.awt.event.ActionEvent evt)
{
//x1 is an object of ParentFrame
ParentFrame f1=new ParentFrame();
f1.fillPanel();
//fillpanel()fills p1 with checkboxes after running validate() and repaint() on it
}
答案 0 :(得分:7)
单击b1时,会显示另一个帧x2,其中包含数据值 可以修改数据库表t1
添加到p1的复选框数量取决于数据的数量 数据库表(t1)中满足特定条件的值。
确保删除了JPanel中的当前内容,然后
p1.revalidate();
p1.repaint();
JPanel
的新实例,然后您必须将此Objcet添加到JFrame
,然后必须致电validate()
& repaint()
到JFrame
(现在我希望你不要扩展这个容器: - )修改后,当x2关闭时,我希望自动更新第x1帧中的面板p1,以反映对x2所做的更改 数据库即满足标准的数据值的数量可能 在x2中修改t1之后发生了变化,因此,数量也变了 要在p1上显示的复选框也可能已更改。
使用CardLayout代替
不要创建两个或更多JFrames
,而是使用JDialog
,
创建JDialog
(setDefaultCloseOperation(JDialog.CLOSE...)
)只有一个实例,将此容器重新用于来自父级的其他操作
答案 1 :(得分:3)
通常,当您希望更改UI时,您可以调用validate()
,然后调用repaint()
。
答案 2 :(得分:1)
试试这个链接......这个问题已经解决了....
答案 3 :(得分:0)
您应该将帧f1传递给帧f2
JFrame Frame;
public f1(JFrame f){
frame=f;
}
然后,写一个关闭方法
int closeFrame(){
f.fillPanel();
f.show();
return JFrame.HIDE_ON_CLOSE;
}
设置帧f2的默认关闭操作
public f1(JFrame f){
frame=f;
this.setDefaultCloseOperation(closeFrame());
}
希望没关系。
答案 4 :(得分:0)
您可以做的一件事是在ActionListener for button中,您可以执行以下操作:
//jp is a JPanel
//remove the current JPanel
frame.remove(jp);
//do the changes you want to do
//set sizes and border as before
//again add the panel
frame.add(jp);
frame.revalidate();
frame.repaint();