我有一个拆分窗格,每个拆分窗格都包含一个带有表视图的锚定窗格(paneA paneB)。通过单击“显示”按钮,我想根据拆分窗格的选定侧打开一个新视图。
E.G。
Pane A | Pane B
patient 1 | patient a
patient 2 | patient b
(ShowButon)
我的想象。
private void showButton(ActionEvent e) {
if (is selected paneA){
get selected row
open view conataining information from selected row paneA
else if (is selected paneB) {
get selected row
open view conaining information from selected row paneB
}
}
例如,对于选项卡视图,您可以轻松获取所选的选项卡。现在,这样的分割窗格可能会出现这种情况吗?
我希望现在可以更容易理解了。
预先感谢
答案 0 :(得分:-1)
我不知道观看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
按钮可能是一个更好的主意;对我来说,这似乎更“标准”。