调用事件处理程序

时间:2014-06-21 17:05:47

标签: javafx javafx-2 javafx-8

我有一个带有测试按钮的TabPane,它调用此代码:

Button bt1 = new Button("Select");

        bt1.setOnAction(new EventHandler<ActionEvent>()
        {
            @Override
            public void handle(final ActionEvent event)
            {
                TreeClass.getConnectedAgentsMap();

                TreePane.getTreeView().getSelectionModel().clearAndSelect(3);   

            }
        });

此代码选择TreeNode为TreeView:

cell.setOnMouseClicked((MouseEvent me) ->
                {
                    if (!cell.isEmpty())
                    {
                        /// some action
                    }
                });

正如您所看到的,当鼠标选择树行时会触发此事件。 我尝试使用以下代码调用树单元格操作:

cell.selectedProperty().addListener(new ChangeListener<Boolean>()
                {
                    @Override
                    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue)
                    {
                        /// Some Action

                    }
                });

但它不是正确使用它的方法,因为有几次打开了新的Tab。点击按钮调用动作事件有没有办法?

1 个答案:

答案 0 :(得分:0)

final Point2D windowCoord = new Point2D(SCENE.getWindow().getX(), SCENE.getWindow().getY());
final Point2D sceneCoord = new Point2D(SCENE.getX(), Main.getStage().getScene().getY());
final Point2D nodeCoord = MYCONTROL.localToScene(0.0, 0.0);

final double x = Math.round(windowCoord.getX() + sceneCoord.getX() + nodeCoord.getX());
final double y = Math.round(windowCoord.getY() + sceneCoord.getY() + nodeCoord.getY());
try {
    Robot robot = new Robot();
    robot.mouseMove(new Double(x).intValue()+1, new Double(y).intValue());
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (AWTException ex) {
    ex.printStackTrace();
}

部分代码来自this website