Java GridBagLayout+;绝对布局
我试图做一个3列布局,在每一列我想能够绝对位置标签和文本框 问题是我的标签(jLabel2)甚至从未显示过 这是我的密码: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
/**
* 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.