【发布时间】:2014-05-06 22:22:12
【问题描述】:
您好,我有一个 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();
}
【问题讨论】:
-
根据您的描述,添加新组件时面板似乎没有自动重新验证。在将所有内部面板添加到父面板后,尝试在父面板上显式调用
revalidate()。 -
尝试调用
jpListCommentPane.revalidate()而不是jpListCommentPane.repaint(),最后执行此操作,执行一次。不需要调用jpListCommentPane.validate();,尤其是在循环中:P -
@MadProgrammer 感谢它有效。如何将您的评论标记为答案?