JavaFX добавляет слушателя мыши в TreeCell Graphic
Я пытаюсь добавить прослушиватель события MouseClicked в ячейку дерева, чтобы он запускался, когда пользователь нажимает на значение "Графика" или "Строка" ячейки.
TestApp.java
public class TestApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Image image = new Image(getClass().getResourceAsStream("icon.png"));
TreeItem<String> root = new TreeItem<String>("Root");
root.setGraphic(new ImageView(image));
TreeItem<String> child = new TreeItem<String>("Child");
root.getChildren().add(child);
TreeView<String> tree = new TreeView<String>(root);
tree.setCellFactory(new TestTreeCellFactory());
StackPane pane = new StackPane();
pane.getChildren().add(tree);
stage.setScene(new Scene(pane, 300, 250));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
private class TestTreeCellFactory implements Callback<TreeView<String>, TreeCell<String>> {
@Override
public TreeCell<String> call(TreeView<String> treeView) {
CheckBoxTreeCell<String> tc = new CheckBoxTreeCell<String>();
tc.setOnMouseClicked((event) -> mousePressed(event, treeView));
return tc;
}
public void mousePressed(MouseEvent event, TreeView<String> treeView) {
if(event.getButton().equals(MouseButton.SECONDARY)) {
System.out.println("Right Mouse Button Clicked!");
}
}
}
}
Событие мыши в данный момент срабатывает, когда я нажимаю на строковое значение, но не срабатывает, когда я нажимаю на значок "Графика". При попытке отладить проблему, вот некоторые из моих наблюдений:
- Кажется, что Графика каким-то образом связана с флажком (щелчок на Графике переключит значение флажка).
- При щелчке по графику строка не будет выбрана, а при нажатии на текстовое значение.
Есть ли способ прикрепить слушателя к графике Tree Cell, как только она будет заполнена, или я думаю об этом неправильно?