如何在不改变其行为的情况下使 ToggleButton 看起来像 RadioButton?

How can I make a ToggleButton look like a RadioButton without changing its behavior?

正好相反。我有一组 ToggleButtons,我希望它们看起来像 RadioButtons,同时保持一次取消选择所有这些按钮的能力。我怎样才能做到这一点?在这种情况下,该问题的已接受答案的 "opposite" 不起作用;它只是删除了按钮的所有样式,只留下它们的标签。

//this doesn't work
ToggleButton button=new ToggleButton("Toggle me!");
button.getStyleClass().remove("toggle-button");
button.getStyleClass().add("radio-button");

您不需要这种样式操作。 RadioButton class 扩展了 ToggleButton,所以你可以这样做:

ToggleButton button = new RadioButton("Toggle me!");

编辑

要在 ToggleGroup 中保持 ToggleButton 行为(能够取消选择),您可以将 RadioButton 的实现与覆盖的 fire() 方法一起使用,逻辑类似于 ToggleButton class:

public static class MyRadioButton extends RadioButton {
    public MyRadioButton() {
    }

    public MyRadioButton(String text) {
        super(text);
    }
    @Override
    public void fire() {
        if (!isDisabled()) {
            setSelected(!isSelected());
            fireEvent(new ActionEvent());
        }
    }
}