我正在尝试通过代码向表单添加一个简单的控件。我已经
了public main(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.setLayout(new java.awt.BorderLayout());
JPanel pnl = new JPanel();
pnl.setLayout(new BorderLayout());
pnl.setBackground(Color.red);
pnl.setSize(500, 500);
add(pnl, BorderLayout.CENTER);
pnl.setVisible(true);
}
当我运行应用程序时,我没有看到我创建的面板。有人可以告诉我我做错了什么吗?
答案 0 :(得分:0)
您没有提到当前容器正在使用的布局,但可能是GroupLayout,一种与NetBeans GUI构建器关联的布局,它不遵循BorderLayout约束/常量。您需要重新考虑整个GUI的布局,特别是如果您要将IDE GUI构建器布局与手动编码布局混合使用。这种混合可以完成,但需要小心 - 创建GUI构建器JPanels,创建自己的手工构建的JPanels,然后将它们组合在使用适当布局的主JPanel中。具体细节将取决于你正在尝试创造什么,这是我们目前所不知道的。
也许这会让你感到困惑:
JPanel pnl = new JPanel();
pnl.setLayout(new BorderLayout()); // (A)
// ....
add(pnl, BorderLayout.CENTER); // (B)
行(A)将pnl的布局设置为BorderLayout
行(B)将pnl添加到 当前 容器的BorderLayout.CENTER位置,再次可能不使用BorderLayout(a)因为你从未表现出或告诉我们,所以猜测。
另外,在将所有组件添加到顶级窗口之后和显示之前,是否会调用pack()
?你应该。
另请注意,由于JPanel默认可见,因此根本不需要这样做:
pnl.setVisible(true);