按钮操作属性 - >添加更改侦听器

时间:2014-12-05 14:29:16

标签: java javafx

我有一个Button,我想在每个Action-Event中添加一个onActionProperty,我想做一些东西。

如何将其添加到按钮?

我的例子:

m_popupSwitch.onActionProperty().addListener(new ChangeListener<EventHandler<ActionEvent>>()
        {
            @Override
            public void changed(ObservableValue<? extends EventHandler<ActionEvent>> arg0, EventHandler<ActionEvent> arg1, EventHandler<ActionEvent> arg2)
            {
                System.out.println("OUTPUT ");
            }
        });

我可以像在我的示例中一样添加它,但它不起作用,所以我如何修复我的代码,每当onActionProperty更改时我得到一个事件...

主要问题是,我有一个ToggleButton,它是ToggleGroup的组。现在我希望在该Action区域中获取该区域中的每个事件。我希望你能帮助我。

3 个答案:

答案 0 :(得分:1)

如果您想采取行动,请选择并取消选择切换按钮,尝试:

    ToggleButton first = new ToggleButton("A");
    ToggleButton second = new ToggleButton("B");
    ToggleGroup group = new ToggleGroup();
    first.setToggleGroup(group);
    second.setToggleGroup(group);
    second.selectedProperty().addListener((p, ov, nv) -> {
        System.out.println("Changed");
    });

可以使用以下方式显示列表的差异:

    ToggleButton first = new ToggleButton("A");
    ToggleButton second = new ToggleButton("B");
    ToggleGroup group = new ToggleGroup();
    first.setToggleGroup(group);
    second.setToggleGroup(group);
    second.selectedProperty().addListener((p, o, n) -> {
        System.out.println("Changed "+p.getValue());
    });
    second.setOnAction(a -> {
        System.out.println("Action");
    });
    second.onActionProperty().addListener((p, o, n) ->{
        System.out.println("OnAction");

    });

如果打印出B(第二个),则会打印:

  Changed true
  Action

随后点击A(第一个)将打印:

  Changed false

所以:

  1. 如果有人点击此按钮,则会调用onAction()侦听器(setOnAction)
  2. 如果切换状态“已选择”发生更改,则调用selectedProperty()侦听器,如果通过单击此切换组的另一个按钮取消选择该选项,则会调用此选项。
  3. 只有在有人移除或使用setOnAction()方法添加新侦听器时,才会调用onActionProperty()侦听器。

答案 1 :(得分:0)

您正在寻找的是

m_popupSwitch.setOnAction(new EventHandler<ActionEvent>() 
{
    @Override public void handle(ActionEvent e) 
    {
        System.out.println("OUTPUT");
    }
});

Reference Here

答案 2 :(得分:0)

您没有向按钮添加侦听器,您注册设置了一个EventHandler,按下该按钮时会调用其handle方法。像这样:

 m_popupSwitch.setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    System.out.println("OUTPUT ");

                }
            });