用更新的内容替换JPanel

时间:2013-05-01 16:39:42

标签: java swing jframe jpanel

在这里,我有一个JPanel JLabelsJTextfields以及一些JButtons。如果一个JTextfield是从用户获取数据并单击搜索按钮,则应从数据库中获取相关数据并在同一面板中显示结果。当我点击提交按钮。我发现我的屏幕没有变化,但是当我调整框架大小时,我可以看到前一个面板后面的更新面板。即使我尝试remove(rp),然后添加与上面相同的结果。

如何用更新的内容替换JPanel?

P.S:我想删除并添加包含更新内容的相同面板

我的代码在替换

时看起来像这样
private void rp_validate(){
     f.add(rp);
     f.revalidate();
     f.repaint();
     f.pack();
}

1 个答案:

答案 0 :(得分:1)

  1. 创建一个包含从数据库查询中获取的所有必要数据的类。
  2. 为包含JPanel的GUI类提供一个公共“setter”方法,该方法接受上述类的实例。
  3. 然后在JPanel类中,调用setText(...)传递setter方法参数中保存的信息,以更新JPanel中显示的文本。简单就像馅饼一样。
  4. 例如:

    public void setMyData(MyData myData) {
       this.myData = myData;
       lastNameTextField.setText(myData.getLastName());
       firstNameTextField.setText(myData.getFirstName());
       addressTextfield.setText(myData.getAddress());
       cityTextfield.setText(myData.getCity());
       stateTextfield.setText(myData.getState());
       // ... etc
    }