嗨我有一个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();
}
答案 0 :(得分:2)
删除并将组件添加到jpListCommentPane
后,尝试拨打jpListCommentPane.revalidate()
而不是jpListCommentPane.repaint()
,最后执行此操作,执行一次。不需要调用jpListCommentPane.validate();
,特别是在循环中调用
revalidate
将指示容器执行布局并更新其联系层次结构