Java 在另一个框架中单击按钮,更新JPanel在另一个框架中的内容

Java 在另一个框架中单击按钮,更新JPanel在另一个框架中的内容,java,swing,netbeans,jframe,jpanel,Java,Swing,Netbeans,Jframe,Jpanel,我已经创建了一个具有面板p1的帧x1。加载x1时,复选框将动态添加到p1。添加到p1的复选框的数量取决于数据库表(t1)中满足特定条件的数据值的数量 框x1上有一个按钮b1。当单击b1时,它显示另一个帧x2,其中可以修改数据库表t1的数据值。x2中的“更新”按钮更新t1,以反映对其数据值所做的更改 修改后,当x2关闭时,我希望自动更新第x1帧中的面板p1,以反映对数据库所做的更改,即在修改x2中的t1后,满足条件的数据值的数量可能已更改,因此,p1上显示的复选框的数量也可能已更改 如何从x2刷新

我已经创建了一个具有面板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


             }

通常,当您希望对UI所做的更改实际正确可见时,会调用
validate()
,然后调用
repaint()

单击b1时,将显示另一帧x2,其中包含数据值 可以修改数据库表t1的

  • 改用
添加到p1的复选框数量取决于数据的数量 数据库表(t1)中满足特定条件的值

确保删除了JPanel中的当前内容,然后

p1.revalidate();
p1.repaint();
  • 将是可行的,不要重新创建
    JPanel
    的新实例,然后必须将此对象集添加到
    JFrame
    ,然后必须调用
    validate()
    &
    repaint()
    JFrame
    (现在我希望您不要扩展此容器:-)
修改后,当x2关闭时,我希望自动更新第x1帧中的面板p1,以反映对 数据库ie满足条件的数据值的数量可能 在修改x2中的t1之后发生了变化,因此 p1上显示的复选框也可能已更改

  • 改用

  • 不要创建两个或多个
    JFrames
    ,而是使用
    JDialog

  • 创建
    JDialog
    setDefaultCloseOperation(JDialog.CLOSE…
    )仅一个实例,将此容器用于来自父级的另一个操作


您应该将帧f1传递到帧f2

JFrame Frame;
public f1(JFrame f){
    frame=f;
}
然后,编写一个close方法

int closeFrame(){
    f.fillPanel();
    f.show();
    return JFrame.HIDE_ON_CLOSE;
}
设置帧f2的默认关闭操作

public f1(JFrame f){
    frame=f;
    this.setDefaultCloseOperation(closeFrame());
}

希望一切正常。

您可以在ActionListener for按钮中执行以下操作:

//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();

为了获得更好的帮助,请尽快发布一个带有harcoded值(Random)的文件,而不是JDBC,否则这里的所有内容都可能是指向黑暗的快照此链接……此问题已在此处解决。。。。