【问题标题】:How can I make a ToggleButton look like a RadioButton without changing its behavior?如何在不改变其行为的情况下使 ToggleButton 看起来像 RadioButton?
【发布时间】:2016-11-11 14:45:57
【问题描述】:

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

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

【问题讨论】:

标签: java javafx radio-button javafx-8 togglebutton


【解决方案1】:

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

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

编辑

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

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());
        }
    }
}

【讨论】:

  • 对不起,但我确实声明我需要“保持一次取消选择所有这些的能力”。 RadioButtons 没有这种行为,而 ToggleButtons 有。 RadioButton 不允许在 ToggleGroup 中被取消选择。
  • @RyanHilbert ye,你说得对,RadioButton 已覆盖 fire() 方法。请参阅我的编辑以解决此问题。
猜你喜欢
  • 2011-04-27
  • 1970-01-01
  • 2013-12-09
  • 2012-12-30
  • 1970-01-01
  • 2018-04-13
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多