删除JPanel中的组件后,无需显示任何内容

时间:2014-05-06 22:22:13

标签: java swing jpanel

嗨我有一个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();

 }

1 个答案:

答案 0 :(得分:2)

删除并将组件添加到jpListCommentPane后,尝试拨打jpListCommentPane.revalidate()而不是jpListCommentPane.repaint(),最后执行此操作,执行一次。不需要调用jpListCommentPane.validate();,特别是在循环中调用

revalidate将指示容器执行布局并更新其联系层次结构