Java GridBagLayout+;绝对布局

Java GridBagLayout+;绝对布局,java,swing,layout-manager,gridbaglayout,null-layout-manager,Java,Swing,Layout Manager,Gridbaglayout,Null Layout Manager,我试图做一个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 j

我试图做一个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);

知道我做错了什么吗?

使用布局管理器查看
pnlTopContent
。哪一个是正确的取决于你想要什么。即使是默认的
FlowLayout
也可以工作。如果要使标签居中,例如,可以使用带有居中对齐的
FlowLayout

pnlTopContent.setLayout(new FlowLayout(FlowLayout.CENTER));
然后,它显示,但不是在正确的地方

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


GridBagLayout有一个约束,允许您将构件定位在柱的右/左/中。阅读上的Swing教程中的部分。您可能希望从
锚定
约束开始

您的
pnlTopContent
是否可见?缺少某些内容。您没有显示创建jLabel2。也不要使用绝对布局,即使是UI的一部分。相反,使用适当的布局管理器是的,为什么什么都不显示是很奇怪的:/i我正在创建这样的标签:jLabel2=newjavax.swing.JLabel();尝试不为pnlTopContent设置空布局管理器。不需要使用HTML来居中文本
对于占据整个pnlTopContent的标签…
-最简单的解决方案是使用中心对齐的FlowLayout。在其他情况下,您可能会使用
label.setHorizontalAlignment(JLabel.CENTER)
@camicr非常正确,我将编辑答案。当然,居中只是一个猜测,我假设标签可能与网格的其余部分不一致,因为宽度设置为5,但如果它们一致,那么这显然是最简单的实现+1.