我的SplitPane
内部有问题ScrollPane
。我需要一个类似于的可扩展滚动窗格,TableView
所以当我有太多项目时我有滚动条,当我的所有项目都可见时,然后隐藏滚动条。
ScrollPane 有一个开关:fitToHeight
但真/假都不能完成我需要的工作。我将上传两张截图来说明我的意思。如果它设置为true
然后我根本没有滚动,这不是一个解决方案,因为我可能有太多数据无法容纳在一个窗口中,所以我需要滚动。如果它设置为false
然后我总是有滚动条,即使没有数据显示在视图的底部。
我想成为动态的滚动条,所以当我拖动最后一个分隔线并且没有空间容纳最后一个项目时,滚动条应该出现,当每个项目都有空间时,SplitPane
它不应该显示。
知道如何实现吗?
相关代码:
文件格式:
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.VBox?>
<ScrollPane xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fitToWidth="true"
fx:controller="test.Controller">
<SplitPane fx:id="splitPane" orientation="VERTICAL">
<VBox spacing="5" minHeight="20">
<Label text="*Title*" VBox.vgrow="NEVER"/>
<TextArea VBox.vgrow="ALWAYS"/>
</VBox>
<VBox minHeight="20" spacing="5">
<Label text="*Title*" VBox.vgrow="NEVER"/>
<TableView VBox.vgrow="ALWAYS">
<columns>
<TableColumn/>
</columns>
</TableView>
</VBox>
<VBox minHeight="20" spacing="5">
<Label text="*Title*" VBox.vgrow="NEVER"/>
<TableView VBox.vgrow="ALWAYS">
<columns>
<TableColumn/>
</columns>
</TableView>
</VBox>
<VBox minHeight="20" spacing="5">
<Label text="*Title*" VBox.vgrow="NEVER"/>
<TextArea VBox.vgrow="NEVER"/>
</VBox>
<padding>
<Insets topRightBottomLeft="5"/>
</padding>
</SplitPane>
</ScrollPane>
控制器:
public class Controller implements Initializable {
@FXML
private SplitPane splitPane;
@Override
public void initialize(URL location, ResourceBundle resources) {
splitPane.setDividerPositions(0d,.33d, .66d,1d);
}
}
主要的:
public class Main extends Application {
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("View.fxml"));
ScrollPane pane = loader.load();
primaryStage.setScene(new Scene(pane, 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在这里我有滚动条,即使不需要滚动,每个项目都是可见的
这里我没有滚动条