【发布时间】:2011-09-10 02:17:44
【问题描述】:
我有一种情况,用户输入一个字符串,我的代码为它创建了一个 Jlabel,并尝试将它置于全屏 JFrame/Pane 的中心。我的问题是,为了能够准确地居中,我需要知道它的尺寸。
我需要一种方法来确定 JLabel 应该有多长(宽),以便它适应字符串的长度,仅此而已。我尝试使用组件具有的preferredSize() 方法,它看起来很糟糕(我传递了一个空值让我的UI 确定preferredSize)。我知道如何计算出有效的高度(fontSize + 10px 的大小通常很好),但我无法得到宽度。
我使用的是绝对定位(没有 LayoutManager)。
谢谢
【问题讨论】:
-
听起来您应该为此使用 LayoutManager。
-
不幸的是,对于我目前的解决方案,这是不可能的。 LayoutManagers是按照一定的方式做的,所以一定是可以实现的。
-
您始终可以使用布局管理器(或使用不同的布局管理器嵌套面板)。您使用首选大小来确定组件位置的事实正是布局管理器在定义良好的 API 中所做的事情。如果由于某种原因没有一个布局管理器可以执行您想要的操作,那么您可以编写自己的布局管理器(这就是您现在正在做的事情)。不需要使用绝对定位,除非您有一个应用程序可以将组件拖动到面板上的随机位置。
标签: java swing components awt jlabel