【发布时间】:2009-05-21 14:39:48
【问题描述】:
在我的应用程序中,我有一些较长的标签,在中文操作系统上,标签也会溢出并推出其他组件。这仅在中文操作系统上观察到。如何检测和处理溢出的组件?
【问题讨论】:
在我的应用程序中,我有一些较长的标签,在中文操作系统上,标签也会溢出并推出其他组件。这仅在中文操作系统上观察到。如何检测和处理溢出的组件?
【问题讨论】:
JComponent 有一个setMaximumSize 方法可以帮助您。根据您使用的 LayoutManager,结果可能会有所不同。要在布局级别设置这样的约束,请查看SpringLayout。
【讨论】:
我猜这对某些人来说是个问题,具体取决于窗口大小和语言。
也许不是你想要的,但你可以像这样检查文本的大小:
// 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);
如果文本长度超过限制(您必须摆脱困境),您可以截断甚至缩写它 - 如果它是已知的,或者可能将其替换为图标并使用工具提示来显示全文。
【讨论】:
您可以通过一些额外的代码使 JTextArea 表现得像一个标签,但它会根据需要将文本换行,而不是使用省略号 (...) 进行缩写。设计您的 UI 时要考虑到包装。
JTextArea label = new JTextArea();
label.setText( text );
label.setWrapStyleWord( true );
label.setLineWrap( true );
label.setEnabled( false );
label.setOpaque( false );
【讨论】: