3

ワード ラップをラベルに設定して任意のレイアウトに配置すると、ラベルを ScrollPane に配置しない限り、ワード ラップは正常に機能します。次に例を示します。

@Override
public void start(Stage primaryStage) {
    primaryStage.setTitle("Test");
    BorderPane borderPane = new BorderPane();
    VBox myView = new VBox();
    Label label = new Label("Lorem ipsum dolor sit amet, consectetur adipisicing elit," +
            " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" +
            " ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip" +
            " ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate" +
            " velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat" +
            " cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");
    label.setWrapText(true);
    myView.getChildren().addAll(label);

    ScrollPane scroll = new ScrollPane();
    scroll.setContent(myView);
    scroll.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);

    borderPane.setCenter(scroll);

    Scene scene = new Scene(borderPane, 300, 400);
    primaryStage.setResizable(false);
    primaryStage.setScene(scene);
    primaryStage.sizeToScene();
    primaryStage.show();
}

スクロールペイン内でワードラッピングを機能させる方法はありますか?

4

1 に答える 1

6

Javadoc の引用:

public final void setWrapText(boolean value)

プロパティの説明:

テキストの連続が Labeled の幅を超える場合、この変数は、テキストを別の行に折り返すかどうかを示します。

あなたの例では、ラベルにサイズを設定しなかったため、すべてのテキストに合わせて自動的にサイズが変更されました。したがって、ラベルは、あなたがテキストを折り返すことを望んでいることを理解しましたが、テキストが彼の幅に収まったため、彼は何もしませんでした.

ここで、そのようにラベルのプレフィクスサイズを設定すると、彼はテキストを折り返すように強制されます:

    label.setPrefSize(250, 500);

あなたができること (そしておそらくより良い方法です) は、またはメソッドScrollPaneを使用してその中のコンポーネントのサイズを変更するように指示することです。ちょうどこのような :setFitToWidthsetFitToHeight

    scroll.setFitToWidth(true); 

ウィンドウのサイズを変更すると、ScrollPane のサイズに合わせて Label のサイズが変更され、それに応じてテキストが折り返されます。

目的を達成する別の方法は、 Label の代わりに Text オブジェクトを使用することです。

Text text = new Text("Lorem ipsum dolor sit amet, consectetur adipisicing elit," +
            " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" +
            " ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip" +
            " ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate" +
            " velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat" +
            " cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");

    text.setWrappingWidth(250);
于 2013-09-09T13:59:11.037 に答える