Java 如何将JLabel 130px的位置设置在现有位置旁边?

Java 如何将JLabel 130px的位置设置在现有位置旁边?,java,swing,user-interface,jlabel,layout-manager,Java,Swing,User Interface,Jlabel,Layout Manager,我正在创建一个新的标签,我想在现有的标签旁边精确定位130px。我不熟悉布局,宁愿绝对定位我的标签。我的代码如下: playerLabels[index] = new javax.swing.JLabel(); playerLabels[index].setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/image001".png"))); playerLabels[index].setBounds(pla

我正在创建一个新的标签,我想在现有的标签旁边精确定位130px。我不熟悉布局,宁愿绝对定位我的标签。我的代码如下:

 playerLabels[index] = new javax.swing.JLabel();
 playerLabels[index].setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/image001".png")));
 playerLabels[index].setBounds(playerLabels[index - 1].getX() + 130, playerLabels[index - 1].getY(), playerLabels[index - 1].getWidth(), playerLabels[index - 1].getHeight());

 panel.add(playerLabels[index]);
 playerLabels[index].setVisible(true);
我没有收到任何错误,但即使创建了标签。它们不会出现在所需的位置


有人知道我能做什么吗?

您发布的代码不会描述这个问题。请给出一个可以复制您的问题的示例代码

为了解决您的问题,如果手动设置元素的位置(setBounds),则首先需要将容器布局设置为null,然后需要设置要添加这些jlabel的面板的大小

一,

this.setLayout(null)

二,


panel.setSize(900900);//无论您需要什么尺寸。

我同意通常最好使用LayoutManager。也就是说,Oracle发布了一篇文章,描述了如何做到这一点:

使用布局。请参阅。
我不熟悉布局
-现在是学习的好时机
宁愿绝对定位我的标签
-Swing设计用于布局管理器。通过尝试手动管理位置,您实际上是在重新发明轮子。有不同的方法来定位零部件。您可以在标签周围添加一个130像素的边框。您可以在两个标签之间添加一个130像素的不可见组件。如果没有适当的要求,我们无法建议最佳解决方案。可能使用空布局的一种情况是,组件的“随机”定位是因为用户可以拖动组件,或者当组件通过摆动计时器移动时,您有组件的动画。但是你有一个130像素的特定要求,这意味着它不是随机的。或者可以使用FlowLayout。可以在每个组件之间指定130像素的间距。或者使用GridLayout,您可以指定间隙,所有组件的大小都相同。(1-)不要使用空布局。正确使用布局管理器可以解决此问题。@camickr请再次检查我的答案。我不建议使用setLyout null,但是如果有人想使用setBounds,他必须使用setLayout null。有什么不对的。显然,他可以为组件使用任何现有的标准布局,但这是另一个问题。“其中有什么问题。”我不是@camickr,但任何使用
null
布局的建议都会得到我的自动否决票。当程序员能够使用空布局时,他们应该足够熟练地使用标准布局管理器,以实现1)何时(何时)使用空布局。2) 与为空布局容器编写的随机代码相比,自定义布局逻辑在
CustomLayout
中描述得最好。-向新手建议空布局往往会让他们认为这是最好的(扰流板:不是)或唯一的GUI制作方法。感谢您的建议@AndrewThompson。我也不会给出将布局设置为空的建议。然而,我试图向他解释的是,除非将布局设置为空,否则setBounds不起作用。兰普罗斯想知道,为什么即使在使用后置球设置位置后,它也没有显示在所需的位置。所以原因是布局。你一直回到“但是他们问了”,所以让我分享一个与我之前观点相关的评论。。参见
我最终阅读了布局。感谢您的链接
-您在5小时前的第一条评论中获得了该链接。