在java中将元素添加到运行时的面板中

时间:2013-01-10 22:49:29

标签: java swing layout constructor jpanel

  

可能重复:
  How to dynamically add JLabels to JPanel?

我创建了一个面板并使用了gridlayout。

public pnlFriends() {
    initComponents();
    this.setLayout(new GridLayout(10,1));
   // showFriends();

}

private void formComponentShown(java.awt.event.ComponentEvent evt) {
    showFriends();
    System.out.print("comp");
}

   private void showFriends()
   {
    //Integer id = NewMain.network.getEdges().get(Main.uuid).getDegree();
    for(int i = 0;i < 10 ;i++)
    {

        String name = "as";
        String occupation ="adf";
        String place = "asdf";
        Integer connections = 5;
        this.add(displayMiniProfile(name,occupation,place,connections));
    }
}

displayMiniProfile返回JPanel。

现在,当我在父JPanel的构造函数中调用此函数时,它可以工作,我可以添加MiniProfile JPanel。

但是当我在componentshown事件的响应中调用此函数时,它没有显示任何内容。

为什么?

我怎样才能达到同样的目标?

1 个答案:

答案 0 :(得分:2)

未显示任何内容,因为在添加新面板后仍未验证JPanel。您需要致电

revalidate();
repaint();

之后

this.add(displayMiniProfile(name,occupation,place,connections));