如何在 SplitPane JavaFX 中锁定分隔线?
How to lock the divider in SplitPane JavaFX?
我有一个 SplitPane,我需要将布局划分为 25% 和 75%。此外,我需要禁止向右侧拖动超过 25% 的分割。但是我可以在 25% space 范围内拖动到任何程度。请帮忙。
SplitPane
将遵守其包含的组件 (items
) 的最小和最大尺寸。因此,要获得所需的行为,请将左侧组件的 maxWidth
绑定到 splitPane.maxWidthProperty().multiply(0.25)
:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ConstrainedSplitPane extends Application {
@Override
public void start(Stage primaryStage) {
StackPane leftPane = new StackPane(new Label("Left"));
StackPane rightPane = new StackPane(new Label("Right"));
SplitPane splitPane = new SplitPane();
splitPane.getItems().addAll(leftPane, rightPane);
splitPane.setDividerPositions(0.25);
//Constrain max size of left component:
leftPane.maxWidthProperty().bind(splitPane.widthProperty().multiply(0.25));
primaryStage.setScene(new Scene(new BorderPane(splitPane), 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这对我有用
private final double dividerMaxWidth = .15;
splitPane.getDividers().get(0).positionProperty().addListener((observable,oldValue,newValue) -> {
if(splitPane.getDividers().get(0).getPosition() > dividerMaxWidth)
splitPane.setDividerPosition(0, dividerMaxWidth);
});
并且如果你想将分隔板锁定在无法移动的硬位置
private final double absolutePosition = .15;
splitPane.getDividers().get(0).positionProperty().addListener((observable,oldValue,newValue) -> {
splitPane.setDividerPosition(0, absolutePosition);
});
我有一个 SplitPane,我需要将布局划分为 25% 和 75%。此外,我需要禁止向右侧拖动超过 25% 的分割。但是我可以在 25% space 范围内拖动到任何程度。请帮忙。
SplitPane
将遵守其包含的组件 (items
) 的最小和最大尺寸。因此,要获得所需的行为,请将左侧组件的 maxWidth
绑定到 splitPane.maxWidthProperty().multiply(0.25)
:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ConstrainedSplitPane extends Application {
@Override
public void start(Stage primaryStage) {
StackPane leftPane = new StackPane(new Label("Left"));
StackPane rightPane = new StackPane(new Label("Right"));
SplitPane splitPane = new SplitPane();
splitPane.getItems().addAll(leftPane, rightPane);
splitPane.setDividerPositions(0.25);
//Constrain max size of left component:
leftPane.maxWidthProperty().bind(splitPane.widthProperty().multiply(0.25));
primaryStage.setScene(new Scene(new BorderPane(splitPane), 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这对我有用
private final double dividerMaxWidth = .15;
splitPane.getDividers().get(0).positionProperty().addListener((observable,oldValue,newValue) -> {
if(splitPane.getDividers().get(0).getPosition() > dividerMaxWidth)
splitPane.setDividerPosition(0, dividerMaxWidth);
});
并且如果你想将分隔板锁定在无法移动的硬位置
private final double absolutePosition = .15;
splitPane.getDividers().get(0).positionProperty().addListener((observable,oldValue,newValue) -> {
splitPane.setDividerPosition(0, absolutePosition);
});