嗨,我有一个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将指示容器执行布局并更新其联系人层次结构

07-25 20:36