未选择切换的切换组-Javafx

问题描述 投票:0回答:3

我有一个带有两个切换按钮的切换组(黄色切换是所选的切换)。

enter image description here

当我单击选定的切换时,两个切换都不会被选中并看起来像这样。

enter image description here

然后,如果我尝试选择是否选择了切换,我会得到一个。

nullPointerException

可以防止所选的切换在单击时未被选中?

	

这对我有用。如果新的选定元素为null,则意味着没有选定的元素,因此只需选择上一个(即“ oldValue”)

javafx togglebutton
3个回答
23
投票

您可以尝试以下代码来创建持久的切换。
toggleGroup.selectedToggleProperty().addListener((obsVal, oldVal, newVal) -> {
    if (newVal == null)
        oldVal.setSelected(true);
});

11
投票

类似,但也许我没有尝试过的更完整的方法可能会在博客条目中定义

doceponton:使用togglebuttons用作radiobuttons
.

也许只能使用radiobuttons而不是toggleButtons来完成您想要的最简单行为。

如果您希望按钮像toggleButtons一样,而不是radiobuttons,则可以尝试使用以下概述的样式技术:如何使RadioButton看起来像Javafx中的常规按钮。


/** * Create a toggle group of buttons where one toggle will always remain switched on. */ class PersistentButtonToggleGroup extends ToggleGroup { PersistentButtonToggleGroup() { super(); getToggles().addListener(new ListChangeListener<Toggle>() { @Override public void onChanged(Change<? extends Toggle> c) { while (c.next()) { for (final Toggle addedToggle : c.getAddedSubList()) { ((ToggleButton) addedToggle).addEventFilter(MouseEvent.MOUSE_RELEASED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent mouseEvent) { if (addedToggle.equals(getSelectedToggle())) mouseEvent.consume(); } }); } } } }); } }

同样的问题,但我不希望活动完全开火 因此,我最终创建了一个togglebutton的子类,该子类在启动事件之前确保RadioButton radioButton=new RadioButton("Radio"); radioButton.getStyleClass().remove("radio-button"); radioButton.getStyleClass().add("toggle-button");

是错误的
因此,取消选择按钮的唯一方法是在组中选择一个其他按钮
isSelected()

0
投票
在FXML文件中

public class RequiredToggleButton extends ToggleButton { @Override public void fire() { if (!isDisabled() && !isSelected()) { setSelected(!isSelected()); fireEvent(new ActionEvent()); } } }

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.