Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX textflow隐藏溢出文本(剪辑或省略号)_Java_Javafx - Fatal编程技术网

JavaFX textflow隐藏溢出文本(剪辑或省略号)

JavaFX textflow隐藏溢出文本(剪辑或省略号),java,javafx,Java,Javafx,在我的应用程序中,我使用一个TextFlow,它最多包含三个子Text。当文本溢出时,文本分成多行(这就是我所理解的所谓的“文本包装”,我想这是我不想要的?)。我需要文本流来剪辑溢出的文本。对于标签为的有style属性-值clip或省略号对我来说可以,但这不适用于文本流s。我尝试将文本流的pref Width设置为区域。如建议的那样,使用\u COMPUTED\u SIZE,但这没有帮助,似乎迫使文本流将文本包装为多行

在我的应用程序中,我使用一个
TextFlow
,它最多包含三个子
Text
。当文本溢出时,文本分成多行(这就是我所理解的所谓的“文本包装”,我想这是我不想要的?)。我需要文本流来剪辑溢出的文本。对于标签为的
有style属性-值clip或省略号对我来说可以,但这不适用于
文本流
s。我尝试将文本流的pref Width设置为
区域。如建议的那样,使用\u COMPUTED\u SIZE
,但这没有帮助,似乎迫使文本流将文本包装为多行<我该怎么办

我使用文本流(而不是标签),因为文本流内部的文本对象需要不同的样式(中间的文本需要粗体)。是否有更好的文本流替代方案,允许我剪辑溢出的文本

以下是一个例子:

public class TestApplication extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        TextFlow example = new TextFlow();
        example.getChildren().addAll(new Text("A very long text."), new Text("So long that will wrap, if it's parent is too small."), new Text("But instead the overrun text should be clipped."));
        example.setPrefWidth(Region.USE_COMPUTED_SIZE);
        example.setStyle("-fx-font-size: 14px");

        HBox wrapper = new HBox(example);
        wrapper.setMaxWidth(30);
        wrapper.setStyle("-fx-border-color: black");

        HBox root = new HBox(wrapper);
        Scene scene = new Scene(root, 500, 500);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

包裹宽度设置为Double.MAX_值的FlowPane似乎会阻止包裹

要剪裁文本,可以创建一个矩形,将其宽度和高度绑定到FlowPane的宽度和高度,然后将其传递给FlowPane的setClip方法

FlowPane wrapper = new FlowPane(example);
wrapper.setPrefWrapLength(Double.MAX_VALUE);

Rectangle rect = new Rectangle();
rect.widthProperty().bind(wrapper.widthProperty());
rect.heightProperty().bind(wrapper.heightProperty());
wrapper.setClip(rect);

包裹宽度设置为Double.MAX_值的FlowPane似乎会阻止包裹

要剪裁文本,可以创建一个矩形,将其宽度和高度绑定到FlowPane的宽度和高度,然后将其传递给FlowPane的setClip方法

FlowPane wrapper = new FlowPane(example);
wrapper.setPrefWrapLength(Double.MAX_VALUE);

Rectangle rect = new Rectangle();
rect.widthProperty().bind(wrapper.widthProperty());
rect.heightProperty().bind(wrapper.heightProperty());
wrapper.setClip(rect);

在HBox中放置文本流是否有帮助?请..@VGR遗憾的是它没有。实际上,文本流在HBox中。这可能是问题的一部分吗?我没有使用HBox,而是尝试使用FlowPane,并对其调用了
setPrefWrapLength(Double.MAX_VALUE)
。这似乎离你的目标更近了。@VGR也许我做了一些与你不同的事情,但当我按照你的建议做时,溢出文本不再被包装,也不再被剪裁。将文本流放在HBox中是否有帮助?请..@VGR遗憾的是它没有。实际上,文本流在HBox中。这可能是问题的一部分吗?我没有使用HBox,而是尝试使用FlowPane,并对其调用了
setPrefWrapLength(Double.MAX_VALUE)
。这似乎离你的目标更近了。@VGR也许我做了一些与你不同的事情,但当我按照你的建议做时,溢出文本不再被包装,也不再被剪裁。