组鼠标事件未激发Javafx

组鼠标事件未激发Javafx,java,javafx-8,Java,Javafx 8,我有一个非常简单的问题。我已经搜索了这一页。也许我忽略了一些细节。不管怎样,如果你看我的代码,一切都很好 但是,如果我将布局包装在一个组中并将其添加到场景中,而不是直接添加布局,则布局和内容窗格似乎都停止检测鼠标事件。事件组g未获取鼠标事件 这种行为正常吗?为什么? 在此问题上的任何帮助都将不胜感激 package mouseeventtest; import javafx.application.Application; import javafx.scene.Group; import j

我有一个非常简单的问题。我已经搜索了这一页。也许我忽略了一些细节。不管怎样,如果你看我的代码,一切都很好

但是,如果我将布局包装在一个组中并将其添加到场景中,而不是直接添加布局,则布局和内容窗格似乎都停止检测鼠标事件。事件组g未获取鼠标事件

这种行为正常吗?为什么?

在此问题上的任何帮助都将不胜感激

package mouseeventtest;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;


public class MouseEventTest extends Application {
    BorderPane layout;

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Test Mouse Event");

        layout = new BorderPane();
        Pane contentPane = new StackPane();
        layout.setCenter(contentPane);

        layout.setOnMousePressed(e ->{ System.out.println("layout.setOnMousePressed..."); });
        contentPane.setOnMousePressed(e -> { System.out.println("contentPane.setOnMousePressed..."); });

        //Group g =  new Group(layout);
        //g.setOnMousePressed(e -> { System.out.println("g.setOnMousePressed ..."); }); 
        //Scene scene = new Scene(g, 800, 800, Color.WHITE);
        Scene scene = new Scene(layout, 800, 800, Color.WHITE);

        scene.setOnMousePressed(e -> { System.out.println("scene.setOnMousePressed..."); });
        primaryStage.setScene(scene);
        primaryStage.show();
        primaryStage.show();
    }

     /**
      * @param args the command line arguments
      */
     public static void main(String[] args) {
         launch(args);
     }

 }
s和
区域
s是场景的根时,它们的大小(显然)存在差异。
组的大小应足以容纳其内容;而
区域的大小要适合整个场景。由于场景图中基本上没有内容(某些容器除外),因此组的首选大小计算为零。因此,不会接收任何鼠标事件

如果您在内容中添加了一些大小,例如

layout.setPrefSize(800, 800);

然后,您将看到组中的鼠标事件,正如预期的那样。

这可能是一个bug吗?詹姆斯,你就是那个人!:)我是新来的。我试着把你的回答标记为答案,但不知道怎么做。无论如何,非常感谢你。你应该多读一读。javafx文档中没有这样简洁的解释。谢谢大家!@Tania要将答案标记为正确,请单击它旁边的复选标记。只需选中它即可。我还做了进一步的测试。我注意到,如果我不将窗格包装在一个组中,窗格将只展开以填充场景,而不指定大小,并且您还可以接收鼠标事件。但是,在组中包装后,似乎不会发生扩展,您必须按照建议指定大小才能接收任何鼠标事件。