gpt4 book ai didi

javaFx标签wrapText不起作用

转载 作者:行者123 更新时间:2023-12-03 09:00:32 25 4
gpt4 key购买 nike

我是新开发人员,我尝试制作一个程序。在我的程序中,有一个消息列表(listMessages),其中的每条消息都是一个 MessageItemController,我使用 VBox 创建了它(自定义控件) code> 其中包含标签和其他一些东西。 MessageItemControllerVBox 的 Sudo 代码:

<VBox fx:id="VBoxContent" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.vgrow="ALWAYS">
<children>
<Label fx:id="lblMessage" text="message" textOverrun="CLIP" wrapText="true">
<padding>
<Insets left="10.0" />
</padding>
</Label>
...
</children>
</VBox>

我想VBoxContent有一个最大宽度。之前,我将 VBoxContentMaxWidth 设置为例如 300px。 (我在 scenebuilder 和我的 fxml 文件中执行此操作,而不是使用代码)。工作完美。我添加到我的 listMessages 工作中的所有消息。
现在我改变了我的想法,我希望 MessageItemController 具有 maxWidth,但为其父级的 0.5%(我的意思是 listMessages ,我将这些消息添加到其中)。因此,我从 fxml 文件中删除 maxWidth 并将以下代码添加到我的 Controller 中:

listMessages.widthProperty().addListener((observable, oldValue, newValue) -> {
if (observableListMessages != null)
observableListMessages.forEach(x -> {
x.VBoxContent.setMaxWidth(0.5 * newValue.doubleValue());
});
});

但如果我为我的VBox设置了MaxWidth(甚至PrefWidth),标签的wrapText可能不起作用code> 来自代码(不是 fxml)。
可以帮助解决我的问题吗?如果你能说我怎样才能使文本换行,或者如果这是不可能的,这是javafx的问题,所以如果有任何想法可以实现我的目的,请说出来。
我很抱歉英语不好。谢谢。

最佳答案

您需要为Label本身设置prefWidth

这是一个简短的演示应用程序:

public class Main extends Application {

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

@Override
public void start(Stage primaryStage) {

VBox root = new VBox(5);
root.setPadding(new Insets(10));

Label label = new Label("This is some long text that should be wrapped.");
label.setWrapText(true);
label.setPrefWidth(100);

root.getChildren().add(label);

primaryStage.setWidth(200);
primaryStage.setHeight(200);

primaryStage.setScene(new Scene(root));

primaryStage.show();
}
}

在您为Label设置首选宽度之前,它并不真正知道您要从哪里开始换行。

如果您希望标签按照 VBox 的大小换行,您可以将 LabelPrefWidthProperty 绑定(bind)到 VBox 的 >WidthProperty 相反:

label.prefWidthProperty().bind(root.widthProperty());

这样做将使您的文本填充其容器的宽度,但如果太长则换行。

关于javaFx标签wrapText不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50899558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com