У меня проблема с SplitPane
внутри ScrollPane
. Мне нужна расширяемая панель прокрутки, похожая на TableView
, поэтому, когда у меня слишком много элементов, у меня есть полоса прокрутки, когда все мои элементы видны, затем скрывают полосу прокрутки.
ScrollPane имеет переключатель: fitToHeight
, но оба true / false не выполняет ту работу, которая мне нужна Я загружу два скриншота, чтобы показать, что я имею в виду. Если он установлен на true
, то у меня просто нет прокрутки, что не является решением, потому что у меня может быть слишком много данных, чтобы поместиться в одном окне, поэтому мне нужна прокрутка. Если он установлен на false
, то у меня всегда есть полоса прокрутки, даже если в нижней части экрана нет данных для отображения.
Я хотел бы быть динамической полосой прокрутки c, поэтому при перетаскивании последний разделитель и нет места для размещения последнего элемента, должна появиться полоса прокрутки, когда для каждого элемента в SplitPane
есть место, тогда его не следует отображать.
Любая идея, как это может быть достигнуто?
Соответствующий код:
F xml:
<?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);
}
}
Здесь у меня есть полоса прокрутки, даже если нет необходимости прокручивать, каждый элемент виден
Здесь у меня нет полосы прокрутки