动态地添加组件的JPanel(Dynamically adding components to JP

2019-06-23 12:44发布

我想一些组件动态地添加到JPanel,但可惜的是它们不会出现。 我只看到constuctor加入的影片。

更新版本(添加新JPanel,所有的组件会):

public class View extends JPanel {

JPanel panel = new JPanel();
JLabel label;
JLabel labels[];
JButton b1 = new JButton("OK");

public View() {
   this.setLayout(new FlowLayout());
   this.add(panel); // adding a new JPanel
   label = new JLabel("My label");
   panel.add(label);  // adding label to the new panel (this one works)
}


public void showLabels() {
  System.out.println("function showLabels called");

  labels = new JLabel[5];

  for (int i = 0; i < 5; i++) {
      labels[i] = new JLabel("Label: " + i);
      panel.add(labels[i]); // this one doesn't work
  }
  panel.add(b1); // this one doesn't work, too
    this.validate(); // validating this class (parent container)
    panel.validate(); // validating the panel, where all the components are
  }
}

可惜的是没有任何改变。

Answer 1:

调用validate()在父容器上,如图中嵌套布局实施例 。 左下方这些标签动态添加。 请注意,调用pack()可能会导致GUI更改的大小,而调用validate()不会。 如果您需要获得GUI来调整-调用pack()否则调用validate()



文章来源: Dynamically adding components to JPanel