有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

操作属性>添加更改侦听器上的java按钮

我有一个按钮,我想在那里添加一个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。现在我想得到这个区域中关于动作属性的每个事件。我希望你能帮助我


共 (3) 个答案

  1. # 1 楼答案

    如果要按UPPS选择并取消选择切换按钮,请尝试:

        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
    

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

      Changed false
    

    所以:

    1. 如果有人单击此按钮,将调用onAction()侦听器(setOnAction)
    2. 如果切换状态“selected”发生变化,或者单击该切换组的另一个按钮取消选择,则会调用selectedProperty()侦听器
    3. 只有当有人使用setOnAction()方法删除或添加新的侦听器时,才会调用onActionProperty()侦听器
  2. # 2 楼答案

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

     m_popupSwitch.setOnAction(new EventHandler<ActionEvent>() {
    
                    @Override
                    public void handle(ActionEvent event) {
                        System.out.println("OUTPUT ");
    
                    }
                });
    
  3. # 3 楼答案

    你要找的是

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

    Reference Here