我目前正在使用带有非托管节点的窗格。我自己放置所有节点,而不是使用任何VBox或类似的东西。 现在我想使用JavaFX中的形状使用Text-Node来显示文本。但是我想限制它们的大小并剪掉任何太长的文本。
我知道标签,但是如果可能的话,我希望避免将它们用于此目的。
我尝试了以下内容:
myPane.getChildren.add(textNode);
textNode.resizeRelocate(getX(), getY(), getW(), getH());
Rectangle clipRectangle = new Rectangle();
textNode.setClip(clipRectangle);
textNode.layoutBoundsProperty().addListener((observable, oldValue, newValue) -> {
clipRectangle.setWidth(newValue.getWidth());
clipRectangle.setHeight(newValue.getHeight());
});
注意,textNode是不受管理的,通过我做的一些计算得到它的坐标,宽度和高度。 我对x,y,宽度,高度的计算似乎是正确的。 示例值将是x = 0,y = 0,width = 600,height = 17。
似乎我以这种方式绘制剪切矩形,没有任何文本实际上在矩形中。因此没有显示任何文字。
我也尝试过:
Rectangle rect = new Rectangle(getGlobalX(), getGlobalY(), getW(), getH());
但没有效果。
也许我误解了.clip函数,也许我误解了我应该如何绘制矩形,或者它可能与我的Pane完全不受管理的节点有关?
我会非常感谢任何线索。
编辑: 除了监听layoutBounds之外,我还尝试在构造函数中调整Rectangle的大小。没有帮助。 另请注意,getW()不返回文本的宽度,但是我想要剪切文本的一些计算宽度