0

我正在尝试制作一个 3 列布局,在每一列中我希望能够绝对定位标签和文本框。

问题是我的标签(jLabel2)甚至从未显示出来。

这是我的代码:

 /**
  * Top JPanel (Top) 
  */
 JPanel pnlTop = new JPanel();
 pnlTop.setBackground(new java.awt.Color(223, 223, 217));
 pnlTop.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new java.awt.Color(173, 173, 166)));
 c.gridx = 0;
 c.gridy = 0;
 c.gridwidth = 5; // five rows
 c.gridheight = 1; // one column
 c.fill = GridBagConstraints.BOTH;
 //c.weighty = 0.04;
 add(pnlTop, c);       

 /**
  * Top JPanel Content (Here is where i want to put absolute content)
  */
 JPanel pnlTopContent = new JPanel();
 pnlTopContent.setLayout(null);

 jLabel2.setFont(new java.awt.Font("Lucida Grande", 1, 16)); // NOI18N
 jLabel2.setText("Hello");

 jLabel2.setLocation(150, 50);     

 pnlTopContent.add(jLabel2);
 pnlTop.add(pnlTopContent);

任何想法我做错了什么?

4

2 回答 2

1

然后它显示但不在正确的位置

“正确的地方”对您意味着什么?为什么还要将标签添加到第二个面板?为什么不直接将标签添加到 pnlTopContent 中?

GridBagLayout 有一个约束,允许您将组件定位在列的右/左/中心。阅读 Swing 教程中有关如何使用 GridBagLayout的部分。您可能想从anchor约束开始。

于 2013-07-22T14:45:58.643 回答
0

将布局管理器用于pnlTopContent. 哪一个是正确的取决于你想要什么。即使是默认设置FlowLayout也可能有效。如果要使标签居中,例如可以使用FlowLayout居中对齐:

pnlTopContent.setLayout(new FlowLayout(FlowLayout.CENTER));
于 2013-07-22T14:30:10.167 回答