setOnMouseClick Регион JavaFx не вызывается - PullRequest
3 голосов
/ 02 марта 2012

У меня есть Region-объект внутри Parent, для которого я хочу установить 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);
}

Проблема в том, что мой метод handle никогда не вызывается, когда я добавляю Region -объект. Если я добавлю объект ImageView , щелчок получен.

Есть идеи?

1 Ответ

4 голосов
/ 03 марта 2012

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();
}
...