【问题标题】:Java - set the exact position of a JComponentJava - 设置 JComponent 的确切位置
【发布时间】:2012-08-10 00:58:42
【问题描述】:

我需要帮助来设置 JPanel 上 JLabel 的 x 和 y 位置,不是北、南、西、东。

感谢您的宝贵时间。

【问题讨论】:

  • 为什么?这是 LayoutManager 的唯一责任,永远不要手动接管它

标签: java swing position layout-manager jcomponent


【解决方案1】:

要让 JPanel 尊重确切的位置,您应该将其布局设置为 null。然后,您可以在任何 JComponent 上使用 setLocation 来设置其在该 JPanel 中的位置。

JPanel panel = new JPanel();
panel.setLayout(null);
JLabel label = new JLabel("text");
label.setLocation(50, 20);
panel.add(label);

但是,请注意绝对位置有几个缺点(在下面的 cmets 中提到),您应该使用 LayoutManager 来定位您的组件。

【讨论】:

  • 技术上是正确的,但是在 Swing 中是一个 no-no-never(模数奇数的极端情况) - 请改用 LayoutManager
  • 虽然您从未向 OP 提及使用 Absolute Positioning 的缺点,但您在 sn-p 中犯的另一个大错误是没有使用 setSize(...),对于许多人来说JComponents 单独设置位置不会有太大帮助,您还必须为所述 JComponent 设置大小
  • 正确 (+1),但正如 kleopatra 在对该问题的评论中指出的那样,一开始不应该这样做。我回答了被问到的问题,但我会添加那个重要说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多