【问题标题】:Radio Button Change Event JavaFx单选按钮更改事件 JavaFx
【发布时间】:2014-12-18 20:15:12
【问题描述】:

我有很多 HBoxes,里面有一些不同的组件(RadioButton、Labels、Buttons ...)。 单选按钮位于 ToggleGroup 中,因此只能选择 1 个单选按钮。

我想向单选按钮添加一个 OnChange - 事件。如果未选择 RadioButton,则应该有一个事件触发器。如何将事件添加到单选按钮?

目前我有这样的代码,但它没有我想要的功能。

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

        @Override
        public void handle(ActionEvent arg0) {
            if(!radio.isSelected()){
                ivTriangleImg.setRotate(iRotateCoord2);
                btnTriangle.setGraphic(ivTriangleImg);
            }

            if(group!=null){
                group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {

                    @Override
                    public void changed(
                            ObservableValue<? extends Toggle> arg0,
                            Toggle arg1, Toggle arg2) {

                    }
                });
            }
        }
    });

我使用 JavaFX 2.0 和 Java 1.7,所以我不能使用 Lambda 函数或 JavaFx8 / Java 1.8 的特殊组件函数

【问题讨论】:

  • group=Toggle Group 我想在 Radio >Button 未选中时获取信息...

标签: events javafx radio-button onchange radio-group


【解决方案1】:

JavaFX 控件的状态由可观察属性表示。您可以通过control.propertyNameProperty()add ChangeListeners 访问这些属性:

radioButton.selectedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> obs, Boolean wasPreviouslySelected, Boolean isNowSelected) {
        if (isNowSelected) { 
            // ...
        } else {
            // ...
        }
    }
});

【讨论】:

    【解决方案2】:
    radio.setOnAction(new EventHandler<ActionEvent>() {
    
            @Override
            public void handle(ActionEvent arg0) {
                if(!radio.isSelected()){
                    ivTriangleImg.setRotate(iRotateCoord2);
                    btnTriangle.setGraphic(ivTriangleImg);
                }
    
                if(group!=null){
                    group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
    
                        @Override
                        public void changed(
                                ObservableValue<? extends Toggle> arg0,
                                Toggle arg1, Toggle arg2) {
    
                            if(!radio.isSelected()&&ivTriangleImg.getRotate()!=iRotateCoord1){
                                ivTriangleImg.setRotate(iRotateCoord1);
                                btnTriangle.setGraphic(ivTriangleImg);
                            }
    
                        }
                    });
                }
            }
        });
    

    这适用于我的问题。我犯了一个小错误,所以我不检查 Radio-Style。它现在工作正常......对不起这个问题。

    是否有可能在单选按钮而不是他的组中查看事件?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 2021-11-14
      • 2016-10-21
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多