当一个JavaFX的控制器是不够的末来显示内容,它会显示“...”?(When a javaFX&#

2019-08-17 06:48发布

我的问题是我能赶上显示器的情况下,“...”?

※我的意思是它的JavaFX有一个API,如果内容的结尾替换为“...”来判断?

事实上,我的问题的原因是,现在我们的测试人员要我们树立了一个TIP控制器(如Label),如果它仅仅是不够的显示。 如果内容足够的控制器来显示,我们并不需要添加一个提示即可。

Answer 1:

还有,如果一个文本已被截断告诉的没有简单的方法。

这条新闻是在标记对象完成,并在LabeledSkinBase的实施,我们可以看到,所有的剪辑逻辑委托给computeClippedText(),它返回(剪切或没有)字符串:

result = Utils.computeClippedText(font, s, w, truncationStyle, ellipsisString);
[...]
text.setText(result);

此方法不会去标记对象的引用,并不会触发任何事件,所以唯一的机会,我们有computeClippedText()是否决定剪辑来看看实际的文本节点( 文本 ),其中包含实际正在显示的文字。 由于标记不公开这个节点上,我们不得不求助于做一个查询:

String originalString = myLabeled.getText();
Text textNode = (Text) myLabeled.lookup(".text"); // "text" is the style class of Text
String actualString = textNode.getText();

contentHasBeenClipped = originalString.notEquals(actualString);

我们终于得到它了!



Answer 2:

没有用于指定超限文本的样式的API:

http://docs.oracle.com/javafx/2/api/javafx/scene/control/Labeled.html#textOverrunProperty

http://docs.oracle.com/javafx/2/api/javafx/scene/control/Labeled.html#ellipsisStringProperty

http://docs.oracle.com/javafx/2/api/javafx/scene/control/Labeled.html#wrapTextProperty

但我不知道有任何的API来检测溢出发生。 也许这将是一个很好的增强请求? 你可以在这里提交它:

http://javafx-jira.kenai.com/



文章来源: When a javaFX's controller is not enough to display content, it will display “…” at the end?