嗨,我有一个JPanel,里面有很多JPanel。当用户在内部面板中更改数据时。我需要刷新外板;我删除了所有内部面板,并添加了新的内部面板。我的问题是刷新后没有显示内部面板。如果我将JFrame最小化然后最大化,它将显示刷新面板。有人可以告诉我如何解决这个问题。提前致谢。
我的代码可以删除并添加新的JPanel
private void getListCommentPane(){
//sortPage
Component[] components = jpListCommentPane.getComponents();
for (Component component : components) {
jpListCommentPane.remove(component);
jpListCommentPane.validate();
}
ArrayList<CommentItem>sortComment= lstComment;
Collections.sort(sortComment,CommentItem.sortPage);
for(CommentItem comm: sortComment){
//The class DivCommentJPane extends JPanel
DivCommentJPane d=new DivCommentJPane(comm, this);
jpListCommentPane.add(d);
}
jpListCommentPane.repaint();
}
最佳答案
在删除组件并将其添加到jpListCommentPane
之后,尝试调用jpListCommentPane.revalidate()
而不是jpListCommentPane.repaint()
,最后执行一次,执行一次。无需调用jpListCommentPane.validate();
,尤其是在循环内revalidate
将指示容器执行布局并更新其联系人层次结构