【问题标题】:JLabel's position changes to weird location when resizing the frame调整框架大小时,JLabel 的位置变为奇怪的位置
【发布时间】:2012-10-06 23:28:23
【问题描述】:

我只是在做我的个人项目,使用 Swing 绘制基本地图。

我有很多问题,但最糟糕的是JLables 的位置每次我都会改变

  1. 调整框架大小
  2. 将它们设置为不可见和再次可见 (setvisible(false)->setvisible(true))
  3. 将屏幕移动到另一个选项卡“地图 2”并返回到地图 1(框架有 JTabbedPane

很遗憾我没有足够的声誉来上传图片:(

所有JLables 都位于JPanel 的顶部。

好像

之前
.------------------------------------------------
.------------------------------------------------
.---------标签1-----------------
.------------------------------------------------
.-----------------标签2--------------------
.------------------------------------------------
.-------------------------------标签3--------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------------------

之后
.------------------------------------------------
.---------标签1 标签2 标签3------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------
.------------------------------------------------------------

我也尝试在调整大小后使用setLocation(new Point(x,y));,但没有任何结果。

任何提示将不胜感激。 :)

【问题讨论】:

  • 请发表您的出处
  • @DavidKroukamp 谢谢大卫 我会记住这个帖子,以备将来的问题和这个!但是包含这些标签的面板不使用 LayoutManager。所以标签是使用“setLocation”定位的。所以 setLocation 第一次有效,但以后不行:(
  • ACSII 艺术+1; sscce 总是受欢迎的,picture 值得 n 字。 :-)

标签: java swing jframe jlabel


【解决方案1】:

您使用了absolute positioning,但没有相应地设置布局。在FlowLayoutJPanel 的默认值)存在的情况下刷新显示,会导致您在 after 中看到布局。使用setLayout(null) 可能有效,但首选方法是使用预期的layout manager

【讨论】:

  • 我为其他观众编辑了图像。而我没有使用布局管理器的原因是在面板上的任意位置定位标签。
  • 绝对定位的好用例;也可以考虑tooltips
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2015-02-08
相关资源
最近更新 更多