背景
我正在尝试根据描述here构建图片库。
我有一个StackPane
,ScrollPane
和AnchorPane
作为其子级,以相同的顺序添加。
ScrollPane 包含ImageView中包含的图像列表,而 Anchorpane 有两个按钮,固定在左右角,用于滚动图像!
问题
滚动工作正常,因为按钮放在AnchorPane上,这是StackPane上的顶级子项。
我想实现双击imageView以全屏打开。由于 imageView 是 ScrollPane 的子项,因此无法侦听鼠标事件。
有没有办法让ImageView监听mouseEvent?
答案 0 :(得分:1)
不要将AnchorPane
和ScrollPane
放在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);