将JLabel放置在JPanel上的特定x,y坐标处

And*_*Dev 10 java layout swing jcomponent null-layout-manager

我正在尝试在JPanel上的特定X和Y坐标处放置一系列JLabel(并设置其高度和宽度).无论我做什么,每个标签都会立即卷到前一个标签的右侧,并且与所有其他标签的尺寸完全相同.

现在,我的Jpanel处于网格布局中.我已经尝试过Absolute Layout(非法参数异常结果),Free Design(没有标签出现),Flow Layout(一切都被挤到中心),以及其他几个.

不知道我需要做些什么来使这项工作.有人可以帮忙吗?谢谢!

JLabel lbl1 = new JLabel("label 1");
JLabel lbl2 = new JLabel("label 2");
JLabel lbl3 = new JLabel("label 3");
JLabel lbl4 = new JLabel("label 4");
JLabel lbl5 = new JLabel("label 5");

myPanel.add(lbl1);
myPanel.add(lbl2);
myPanel.add(lbl3);
myPanel.add(lbl4);
myPanel.add(lbl5);

lbl1.setLocation(27, 20);
lbl2.setLocation(123, 20);
lbl3.setLocation(273, 20);
lbl4.setLocation(363, 20);
lbl5.setLocation(453, 20);

lbl1.setSize(86, 14);
lbl2.setSize(140, 14);
lbl3.setSize(80, 14);
lbl4.setSize(80, 14);
lbl5.setSize(130, 14);
Run Code Online (Sandbox Code Playgroud)

ger*_*cin 16

您必须将容器的布局设置为null:

myPanel.setLayout(null);
Run Code Online (Sandbox Code Playgroud)

不过也是一个很好的建议,看看马蒂斯布局管理器,我想它现在叫做GroupLayout.绝对定位的主要问题是当窗口改变其大小时会发生什么.

  • *"主要问题..窗口改变了它的大小."*因此必须留下小问题:使用不同的字体,PLAF,屏幕设置或容纳其他组件组件来确定组件大小的逻辑.使用`null`布局通常是一个很糟糕的想法. (3认同)