5

我创建了一个框架 x1,它有一个面板 p1。加载 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


             }
4

4 回答 4

9

单击b1时,显示另一个框架x2,其中可以修改数据库表t1的数据值

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

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

p1.revalidate();
p1.repaint();
  • 将有效,不要重新创建 的新实例JPanel,然后您必须将此 Objcet 添加到,JFrame然后必须调用validate()& (现在我希望您不要扩展此容器:-)repaint()JFrame

修改后,当 x2 关闭时,我希望框架 x1 中的面板 p1 自动更新以反映对数据库所做的更改,即满足标准的数据值的数量在 x2 中的 t1 修改后可能已经改变,因此,数量要在 p1 上显示的复选框的数量也可能已更改。

  • 改用CardLayout _

  • 不要创建两个或更多JFramesJDialog而是使用,

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

于 2012-11-15T07:44:13.680 回答
3

通常,当您希望对 UI 的更改真正正确可见时,您会调用 a validate(),然后调用 a 。repaint()

于 2012-11-15T07:36:11.963 回答
1

您应该将帧 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());
}

希望没事。

于 2014-08-08T05:36:21.050 回答
0

那么你可以做的一件事是在按钮的 ActionListener 中你可以执行这些操作:

//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();
于 2019-08-08T14:14:18.547 回答