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

新手上路,请多包涵

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

现在,我的 Jpanel 处于网格布局中。我已经尝试过绝对布局(非法参数异常结果)、自由设计(没有标签出现)、流式布局(一切都被挤压到中心),以及其他一些布局。

不确定我需要做什么才能完成这项工作。谁能帮忙?谢谢!

 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);

原文由 AndroidDev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

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

 myPanel.setLayout(null);

然而,看看 Matisse Layout Manager 也是一个很好的建议,我猜它现在叫做 GroupLayout。绝对定位的主要问题是当窗口改变它的大小时会发生什么。

原文由 gersonZaragocin 发布,翻译遵循 CC BY-SA 3.0 许可协议

  1. 通过调用 setLayout(null) 将容器的布局管理器设置为空。

  2. 为每个容器的孩子调用 Component 类的 setbounds 方法。

  3. 调用 Component 类的 repaint 方法。

笔记:

如果调整包含容器的窗口的大小,则使用绝对定位的容器创建容器可能会导致问题。

请参考此链接: http ://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

原文由 Vinesh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题