setOnMouseClick未调用JavaFx Region

时间:2012-03-01 22:18:20

标签: javafx javafx-2

我在Parent中有一个Region-object,因为我想设置mouseClick方法,如下所示:

item.getNode().setOnMousePressed(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent me) {
                        // do something
                    }
                });

该项目来自Parent,并按以下方式创建:

public MyItem(Region node) {                        
    init(node);  
}

private void init(Node node) {
   getChildren().addAll(node);
}

问题是,当我添加 Region -object时,我的方法 handle 永远不会被调用。如果我添加 ImageView - 对象,则会收到点击。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

Parent通常会根据孩子的大小来计算它的大小。空父级的大小为0。

看看下一个例子。请注意,parent大小是手动设置的,只有单击内部窗格(红色方块)时才会发生“单击”输出:

@Override
public void start(Stage stage) throws Exception {

    Pane parent = new Pane();
    parent.setStyle("-fx-border-color:red;"); // to see pane's size visually
    parent.setOnMouseClicked(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent t) {
            System.out.println("click");
        }
    });
    parent.setPrefSize(100, 100); // set size
    stage.setScene(new Scene(new Group(parent),300,300));

    stage.show();
}