Javafx文字剪辑

时间:2018-03-01 17:18:34

标签: javafx

我目前正在使用带有非托管节点的窗格。我自己放置所有节点,而不是使用任何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()不返回文本的宽度,但是我想要剪切文本的一些计算宽度

0 个答案:

没有答案