为什么TextArea不占用JavaFX中ScrollPane的整个区域?如何在JavaFX中向TextArea添加滚动条?

时间:2014-10-13 10:57:40

标签: java javafx java-8 scrollpane

在Swing中,我要将JTextArea添加到JScrollPane中,以便JTextArea拥有滚动条。当我在JavaFX中执行相同操作时,行为也不同。

这个例子

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;

public class SlideshowForSlipryPage2 extends Application {

    @Override
    public void start(Stage primaryStage) {


        primaryStage.setTitle("SlideshowForSlipryPage");
        primaryStage.setScene(
            new Scene(


                    new ScrollPane(
                        new TextArea() {{
                            setPromptText("[PROMPT 1]");
                        }}
                    )


                , 300, 250
            )
        );
        primaryStage.show();

    }

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

给出

enter image description here

即。文本区域比窗口宽,比它短。

为什么以及如何解决?

3 个答案:

答案 0 :(得分:2)

此问题与文本区域的pref宽度无关。

必须将wrap属性设置为true,以便在光标到达容器边缘时文本将换行到两行。 2种方式:

1)使用场景构建器是最简单的方法。简单点击"自动换行"在TextArea的属性中。

2)调用TextArea的以下方法:

textArea.setWrapText(true);

答案 1 :(得分:1)

试试这个:

textArea.setPrefSize( Double.MAX_VALUE, Double.MAX_VALUE ); 

并设置与父母相同的滚动窗格大小:

scrollPane.prefWidthProperty().bind(<parentControl>.prefWidthProperty());
scrollPane.prefHeightProperty().bind(<parentConrol>.prefHeightProperty());

我希望它可以解决您的疑问!!!

答案 2 :(得分:1)

您必须在ScrollPane上调用setFitToWidth(true)和setFitToHeight(true),您可以在选择ScrollPane后在场景构建器“布局”选项卡中设置这些属性。