java - 动态添加组件到 JPanel

标签 java swing jpanel

我正在尝试将一些组件动态添加到 JPanel,但不幸的是它们没有出现。我只看到构造函数中添加的那些。

更新版本(添加一个新的 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
  }
}

不幸的是什么都没有改变。

最佳答案

调用validate()在父容器上,如 Nested Layout Example 所示.左下方的那些标签是动态添加的。请注意,调用 pack() 可能会导致 GUI 的大小发生变化,而调用 validate() 则不会。如果您需要调整 GUI 的大小 - 调用 pack(),否则调用 validate()

关于java - 动态添加组件到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093350/

相关文章:

java - glassfish/payara 服务器的 MySQL 池连接错误

java - 如果 JTree 可编辑,则不可多选

java - 如何替换 JTextPane 中的 StyledDocument

java - 如何在同一行显示两个单选按钮?

java - 文件加载/保存资源管理器 Java

java - 使用 JodaTime 获取错误的天数

Java - JComponent PaintComponent()

java - 为 Windows 7 显示 ImageIcon png 文件的正确路径是什么?

java - 如何通过在 Java 中单击 JPanel 来 move 未修饰的 JFrame?

java - 执行 "max"的功能方法(使用递归/不使用可变变量)