jut*_*tky 17 java swing jlabel sizing
在Java中,当由于空间不足而无法显示JLabel的文本时,文本被截断并且最后添加"...".
如何轻松找出当前JLabel是显示全文还是截断?
编辑:
我看到有一种方法可以通过使用找出文本的大小FontMetrics.但是,此解决方案并未完全回答这个问题.在JLabel的文本包含HTML装饰的metrics.stringWidth()情况下,还将计算HTML标签的宽度.因此,可能会发生metrics.stringWidth()比JLabel的宽度更大的结果,但仍然可以正确显示文本.
有没有办法知道在显示文本时JLabel本身做出了什么决定.它是否决定截断文本.
省略号由标签的UI委托添加,通常是其子类BasicLabelUI,作为其布局和首选大小计算的一部分.layoutCL()可以重写该方法以检查几何,如此示例所示.
实际上,我会忽略省略并在工具提示中显示全文.
来自Oracle - 测量文本:
// get metrics from the graphics
FontMetrics metrics = graphics.getFontMetrics(font);
// get the height of a line of text in this font and render context
int hgt = metrics.getHeight();
// get the advance of my text in this font and render context
int adv = metrics.stringWidth(text);
// calculate the size of a box to hold the text with some padding.
Dimension size = new Dimension(adv+2, hgt+2);
Run Code Online (Sandbox Code Playgroud)
比较size大小JLabel.getSize();
我想如果组件的首选大小大于其实际大小,那么您会期望截断。为了使它起作用,当然必须已经实现了该组件。
| 归档时间: |
|
| 查看次数: |
12755 次 |
| 最近记录: |