【问题标题】:I can't seem to get RadioButtons to work within JavaFX我似乎无法让 RadioButtons 在 JavaFX 中工作
【发布时间】:2018-09-27 18:28:50
【问题描述】:

我似乎无法让这段代码为 RadioButtons 工作。它不断给我一个新的 ChangeListener 错误,错误是“ChangeListener 类型不是通用的;它不能用参数参数化”。但是我在下面找不到任何与我不同的示例。

group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
    public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) {
        if (patrolBut.isSelected()) {
            placeShipVert(patrolBoat, r, playerBoard, shapes);
        } else if (destroyerBut.isSelected()) {
            placeShipVert(destroyer, r, playerBoard, shapes);
        }
    }
});

感谢您的帮助。

【问题讨论】:

  • 您确定要导入 JavaFX ChangeListener? Swing API 中定义的另一个ChangeListener 不是通用的(除了不兼容)。
  • 我都试过了,但错误仍然存​​在。使用 javafx.beans.value.ChangeListener 时,“ObservableValue”下还有一个错误。
  • 它的错误是“ObservableValue 无法解析为一个类型”,我看不到任何其他方式可以调用该方法。
  • 你导入ObservableValue了吗?另外,考虑使用 lambda 表达式,如答案:addListener((ov, oldToggle, newToggle) -&gt; { ... }); 然后你不需要导入任何这些:)。
  • 你是对的,没有导入ObservableValue,感谢帮助我现在感觉很傻哈哈。

标签: java javafx radio-button


【解决方案1】:

就像上面的评论一样,您是否导入了正确的ChangeListener?根据您的 IDE(例如 Eclipse),您可以设置错误和警告,如果它们覆盖方法,则必须向您的方法添加 @Override 注释。正如您认为您将覆盖一个方法(并因此添加了一个@Override),IDE 会警告您实际上您没有。

如果您使用 Java 8,我个人将更改侦听器用作 Lambda:foo.addListener( (v, o, n) -&gt; handleNewValue(n));

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 2019-07-16
    • 2011-11-30
    • 2015-09-20
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多