来自节点的JavaFx调用事件处理程序

问题描述 投票:0回答:1

我正在尝试为javaFx中的特殊需要创建一种自定义的快捷方式系统。

这种特殊需要使得无法使用KeyCombinaison(仅一个键+修饰符的限制是不可接受的。

我已经执行了正确的KeyCombinaison系统,现在我想从节点调用一个处理程序(我在控制器外部)。但是我找不到任何优雅的解决方案来执行此操作。

有按钮声明:

<ToggleButton fx:id="selective1Button"
    text="Sélectif 1"
    onMousePressed="#handleSelective1ButtonPressAction"
    onMouseReleased="#handleSelective1ButtonReleaseAction"/>

然后,我想从我的快捷方式代码中调用控制器的动作。

public class Shortcut() {

    public void test() {
        ToggleButton button = (ToggleButton) scene.lookup("#selective1Button");
        // How to call #handleSelective1ButtonPressAction from here ? 
    }
}

和标准控制器。

public class MyController {

    // ....
    @FXML
    private ToggleButton selective1Button;

    @FXML
    public void handleSelective1ButtonPressAction() {
        selective1Button.setSelected(true);
    }
}

我可以做一些工作,例如通过使用java.Robot并模拟一些点击,但这并不是很漂亮。

还有其他方法吗?

谢谢

javafx javafx-8 fxml
1个回答
0
投票

我的问题是我想调用鼠标事件。可以使用Robot类将其存档:Example of usage of Robot

但是,可以使用标准动作,并通过调用fire()方法将它们与按钮链接起来:

public void test() {
        ToggleButton button = (ToggleButton) scene.lookup("#selective1Button");
        button.fire();
    }

正如jewelsea所说,使用mousePressed和mouseRelease不是很标准。

© www.soinside.com 2019 - 2024. All rights reserved.