使用JavaFXTextArea,如何在不增加滚动条大小的情况下增加fontsize?

使用JavaFXTextArea,如何在不增加滚动条大小的情况下增加fontsize?,javafx,textarea,scrollbar,Javafx,Textarea,Scrollbar,如何在不增加滚动条大小的情况下增加JavaFX文本区域中的fontsize 下面的示例显示了一个巨大的滚动条。我希望它保持正常的滚动条大小 public class TextAreaProblem extends Application { @Override public void start(Stage primaryStage) throws Exception { TextArea textArea = new TextArea(text);

如何在不增加滚动条大小的情况下增加JavaFX文本区域中的fontsize

下面的示例显示了一个巨大的滚动条。我希望它保持正常的滚动条大小

public class TextAreaProblem extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        TextArea textArea = new TextArea(text);
        textArea.setWrapText(true);

        textArea.setStyle("-fx-font-size: 50");

        Scene scene = new Scene(textArea, 400, 400);

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

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



    String text = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?";

}

我不完全理解为什么会出现这种情况,但如果在
em
中设置字体大小,则不会影响滚动条的大小:

textArea.setStyle("-fx-font-size: 4em;");
对于(部分)解释,默认样式表modena.css有以下注释:

针对不同屏幕DPI调整大小 当屏幕DPI更改时,Windows将使用不同的字体大小 违约默认值为12px,可根据需要更改为15px或18px 根据用户偏好或屏幕DPI。在Mac上,默认值为13px和 嵌入式将依赖于硬件。使UI控件可缩放并 每个字体大小的正确比例是我们的基础 字体大小上的填充(控制控件大小)。这是 使用“em”的CSS度量单位完成,其中(1em=字体大小)

滚动条的大小通过在
em
中指定填充来控制,例如,默认样式表包含:

。滚动条:垂直>.increment按钮>.increment箭头{
-外汇填充:0.167em 0.333em 0.167em 0.333em;/*24*/
-fx形状:“M7.071,1L8.5,1.002L4.5,4l-4-2.998L1.93,1L4.5,2.976L7.071,1z”;
-fx效果:dropshadow(双通道框,-fx阴影高光颜色,1,0.0,0,1.4);
}
因此,我认为发生的是,当您为文本区域指定字体大小(以像素为单位)时

textArea.setStyle("-fx-font-size: 50");
将文本区域的
1em
定义更改为
1em=50px
,使滚动条按钮具有大约17像素高和33像素宽的填充。我的猜测是,在
em
中指定字体大小只会缩放字体大小,但不会更改
em
的定义(您很难定义
1em=4em
…),因此这样做不会影响滚动条的大小