如何在 ScrollPane 中设置 vBarPolicy? JavaFX
How to set vBarPolicy in ScrollPane ? JavaFX
我正在尝试将垂直滚动条设置为始终可见。
但我想这样做,只使用 fxml。目前我正在尝试这样做,就像这样:
<ScrollPane fitToHeight = "true" fitToWidth = "true">
<vbarPolicy>
<ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<LogView fx:id = "logViewLog" />
</ScrollPane>
但是我得到了这个错误:
Caused by: javafx.fxml.LoadException: ScrollBarPolicy is not a valid type.
推荐方案
直接将vbarPolicy
属性设置为ScrollBarPolicy
枚举类型的字符串值:vbarPolicy="ALWAYS"
.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" vbarPolicy="ALWAYS">
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
这适用于任何枚举类型 属性。
参见示例中的实例如何alignment="TOP_LEFT"
,类似地为Label
设置Pos
枚举类型alignment
属性的值。
备用解决方案
正如 Slaw 在评论中指出的那样,您也可以使用 fx:constant
语法以冗长的方式执行此操作:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" xmlns:fx="http://javafx.com/fxml">
<vbarPolicy>
<ScrollPane.ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
如果您这样做,请确保您:
定义 fx
命名空间:
xmlns:fx="http://javafx.com/fxml"
导入 ScrollBarPolicy
类型:
<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
我更喜欢使用前面概述的直接字符串转换,而不是 fx:constant
版本。
我正在尝试将垂直滚动条设置为始终可见。 但我想这样做,只使用 fxml。目前我正在尝试这样做,就像这样:
<ScrollPane fitToHeight = "true" fitToWidth = "true">
<vbarPolicy>
<ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<LogView fx:id = "logViewLog" />
</ScrollPane>
但是我得到了这个错误:
Caused by: javafx.fxml.LoadException: ScrollBarPolicy is not a valid type.
推荐方案
直接将vbarPolicy
属性设置为ScrollBarPolicy
枚举类型的字符串值:vbarPolicy="ALWAYS"
.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" vbarPolicy="ALWAYS">
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
这适用于任何枚举类型 属性。
参见示例中的实例如何alignment="TOP_LEFT"
,类似地为Label
设置Pos
枚举类型alignment
属性的值。
备用解决方案
正如 Slaw 在评论中指出的那样,您也可以使用 fx:constant
语法以冗长的方式执行此操作:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" xmlns:fx="http://javafx.com/fxml">
<vbarPolicy>
<ScrollPane.ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
如果您这样做,请确保您:
定义
fx
命名空间:xmlns:fx="http://javafx.com/fxml"
导入
ScrollBarPolicy
类型:<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
我更喜欢使用前面概述的直接字符串转换,而不是 fx:constant
版本。