Stackpane - MouseClick由其子节点监听

时间:2014-07-01 12:54:35

标签: javafx

背景

我正在尝试根据描述here构建图片库。

我有一个StackPaneScrollPaneAnchorPane作为其子级,以相同的顺序添加。

ScrollPane 包含ImageView中包含的图像列表,而 Anchorpane 有两个按钮,固定在左右角,用于滚动图像!

An image which describes the layout

问题

滚动工作正常,因为按钮放在AnchorPane上,这是StackPane上的顶级子项。

我想实现双击imageView以全屏打开。由于 imageView ScrollPane 的子项,因此无法侦听鼠标事件。

有没有办法让ImageView监听mouseEvent?

1 个答案:

答案 0 :(得分:1)

不要将AnchorPaneScrollPane放在StackPane中,而是尝试使用AnchorPane作为此结构的根。首先使用适当的锚点将ScrollPane添加到其中,然后添加按钮。这样按钮仍然位于顶部,但是没有任何东西会干扰滚动窗格内容上的鼠标事件。

ScrollPane scrollPane = new ScrollPane();
scrollPane.setContent(...);


// scrollPane fills entire anchor pane:

AnchorPane.setLeftAnchor(scrollPane, 0.0);
AnchorPane.setRightAnchor(scrollPane, 0.0);
AnchorPane.setTopAnchor(scrollPane, 0.0);
AnchorPane.setBottomAnchor(scrollPane, 0.0);

Button button1 = new Button(...);
Button button2 = new Button(...);

// button1 in top left:
AnchorPane.setTopAnchor(button1, 0.0);
AnchorPane.setLeftAnchor(button1, 0.0);

// button2 in top right:
AnchorPane.setTopAnchor(button2, 0.0);
AnchorPane.setRightAnchor(button2, 0.0);

AnchorPane anchorPane = new AnchorPane();
anchorPane.getChildren().addAll(scrollPane, button1, button2);