-1

我将一个字符串放在变量中,并将其用作标签中的文本。这适用于较短的文本,但我的文本只有几句话,所以它以结束...而不是完成我的字符串。我正在使用 JavaFX 1.0。有谁知道我该如何解决这个问题?

编辑:这是我写的代码。我将变量HandleidingDobbelsteen放在另一个文件的一个阶段。

import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;
import javafx.scene.control.Label;

package var DobbelsteenHandleiding = Label {
    text: "Hier komt te staan wat de uitkomst van de dobbelsteen betekent."
    translateX: 830
    translateY: 245
    width: 140
    textWrap: true;
}

package var HandleidingDobbelsteen = Group {
    content:[
        DobbelsteenHandleiding,
        Rectangle {
            x: 825, y: 220
            width: 150, height: 120
            fill: null
            stroke: Color.BLACK
            strokeWidth: 1.3
        },
        Rectangle {
            x: 825, y: 220
            width: 150, height: 20
            fill: Color.BLACK
        },
        Text {
            font : Font {size: 18}
            x: 845, y: 235
            content: "De regels"
            fill: Color.WHITE
        },
    ]
}
4

1 回答 1

0

我将假设您的讲师对您使用的 JavaFX 版本有误。如果它们是正确的,这些说明可能对你不起作用(因为我不熟悉蒸汽驱动的 Java)......

您的问题的可能原因是String用于设置Label'stextProperty的时间比'sLabel能够显示的要长。在没有看到您的实际代码的情况下,我有几个建议:

首先,确保您Label正在包装其文本:

label.setWrapText(true);

其次,您应该确保将其Label包装在可以处理增长的节点的布局容器中(并非总是必要的,但推荐)。我的建议是VBox

VBox vBox = new VBox(label);

同样,这里对您实际使用的 JavaFX 版本有一些假设,但您可以尝试这个简单的示例,看看它是否适合您:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Test extends Application {

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

    @Override
    public void start(Stage primaryStage) {

        // Simple interface
        VBox vBox = new VBox(5);
        vBox.setPadding(new Insets(10));
        vBox.setAlignment(Pos.CENTER);

        Label label = new Label();

        // Let's add some very long text to our Label
        label.setText("This is long text. It doesn't mean much because I am just writing things to make it long. Yes, I am that clever. Don't you just love this? Neither do I!");

        // Make sure the Label is setup to wrap text when it reaches the end of its boundaries
        label.setWrapText(true);

        // Add the Label to our VBox
        vBox.getChildren().add(label);

        // Show the Stage
        primaryStage.setWidth(300);
        primaryStage.setHeight(300);
        primaryStage.setScene(new Scene(vBox));
        primaryStage.show();
    }
}

结果:

截图 1


为了确认这label.setWrapText(true);确实有所作为,以下是上述代码的结果,没有该行,并带有您遇到的省略号(“...”):

截图 2

于 2019-03-12T03:12:47.370 回答