如何使RadioButton看起来像JavaFX中的常规Button

时间:2015-11-18 17:09:20

标签: java javafx javafx-2 javafx-8

我正在实现类似工具箱的窗格,因此用户一次只能选择一个工具,并且我会从Button切换到RadioButton以查看其行为。

但我发现RadioButton使用带有点的自己的皮肤,但我仍然希望它显示为正常的Button。我是JavaFX和FXML的初学者,所以任何人都知道如何实现这一目标?

4 个答案:

答案 0 :(得分:6)

首先创建一个单选按钮,删除radio-button样式,然后添加toggle-button样式,如

RadioButton radioButton=new RadioButton("Radio");
radioButton.getStyleClass().remove("radio-button");
radioButton.getStyleClass().add("toggle-button");

希望能解决您的问题

答案 1 :(得分:3)

最后我走了另一条路。您可以扩展ToggleButton,使其行为类似于RadioButton。这没有消耗鼠标释放的奇怪点击效果。

public class RadioToggleButton extends ToggleButton {

    // As in RadioButton.
    /**
     * Toggles the state of the radio button if and only if the RadioButton
     * has not already selected or is not part of a {@link ToggleGroup}.
     */
    @Override
    public void fire() {
        // we don't toggle from selected to not selected if part of a group
        if (getToggleGroup() == null || !isSelected()) {
            super.fire();
        }
    }
}

然后在FXML中:

<fx:define>
    <ToggleGroup fx:id="toolToggleGroup" />
</fx:define>
<RadioToggleButton toggleGroup="$toolToggleGroup" />
<RadioToggleButton toggleGroup="$toolToggleGroup" />

已经完成了。

答案 2 :(得分:1)

这是你可以用来摆脱点

的风格
.radio-button > .radio {
  -fx-background-color: transparent;
  -fx-background-insets: 0;
  -fx-background-radius: 0px;
  -fx-padding: 0.0em; /* 4 8 4 8 */
}
.radio-button:selected > .radio > .dot {
  -fx-background-color: transparent;
}

在这里记录;万一有人发现它有用。

答案 3 :(得分:0)

您可以使用ToggleButtonToggleGroup,但必须创建ToggleGroup的扩展名才能保持所选的一个。{1}}。这是一个example