use*_*643 3 java swing components awt jlabel
我有一种情况,用户输入一个字符串,我的代码为它创建一个Jlabel,并尝试将其集中在全屏JFrame/Pane上.我的问题是,为了能够准确地居中,我需要知道它的尺寸.
我需要一种方法来确定JLabel应该有多长(宽),以便它能够容纳字符串的长度,仅此而已.我尝试使用组件具有的preferredSize()方法,它看起来很糟糕(我传递了一个空值,让我的UI确定preferredSize).我知道如何找出有效的高度(fontSize + 10px的大小通常很好),但我无法得到宽度.
我正在使用绝对定位(没有LayoutManager).
谢谢
如果您已经使用字体height + 10作为高度,则可以轻松使用该字符串width + x.
您将使用FontMetrics:
Graphics g;
FontMetrics met = g.getFontMetrics();
int height = met.getHeight();
int width = met.stringWidth(label.getText());
Run Code Online (Sandbox Code Playgroud)
我相信实际的宽度来自于getPreferredSize().getWidth()你事先没有设置它.尝试输出首选大小而不将其设置为null.使用MigLayout对中组件时,我通常pref!会使组件尽可能小,适用于所有尺寸并避免包装,然后将其放在宽敞的父容器中.
| 归档时间: |
|
| 查看次数: |
7545 次 |
| 最近记录: |