Я не знаю ни одного способа посмотреть, на какой стороне SplitPane
нажата кнопка, но вы, безусловно, можете зарегистрировать слушателя на Node
, который вы поместили внутри каждой стороны.
В приведенном ниже примере создается очень простой интерфейс с VBox
на каждой из двух SplitPane
сторон.Мы просто прислушиваемся к щелчку на VBox
и отвечаем соответственно:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class PaneSelectionExample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Simple interface
VBox root = new VBox(5);
root.setPadding(new Insets(10));
root.setAlignment(Pos.CENTER);
SplitPane splitPane = new SplitPane();
VBox.setVgrow(splitPane, Priority.ALWAYS);
// Two VBoxes with Labels
VBox box1 = new VBox() {{
setAlignment(Pos.TOP_CENTER);
getChildren().addAll(
new Label("One"),
new Label("Two"),
new Label("Three")
);
}};
VBox box2 = new VBox() {{
setAlignment(Pos.TOP_CENTER);
getChildren().addAll(
new Label("One"),
new Label("Two"),
new Label("Three")
);
}};
// Now, we'll add an EventListener to each child pane in the SplitPane to determine which
// has been clicked
box1.setOnMouseClicked(event -> System.out.println("Left Pane clicked!"));
box2.setOnMouseClicked(event -> System.out.println("Right Pane clicked!"));
// Add our VBoxes to the SplitPane
splitPane.getItems().addAll(box1, box2);
root.getChildren().add(splitPane);
// Show the Stage
primaryStage.setWidth(300);
primaryStage.setHeight(300);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
Предупреждение о входящем мнении
Хотя это может решить вашу проблемунемедленный вопрос, вы можете пересмотреть свое решение, чтобы иметь только одну кнопку Show
.Собирается ли пользователь ожидать этого и понимать, какие детали будет отображать кнопка Show
?
Возможно, было бы лучше иметь отдельную кнопку Show
на каждой панели окна.SplitPane
;это кажется мне более «стандартным».