2017-10-19 96 views
0

我有一個帶有兩個切換按鈕的切換組,應該看起來像這樣(黃色切換是所選切換)。防止切換組沒有選擇切換 - Java FX

enter image description here

然而,當我在選擇點擊切換切換都成爲選擇,而這個樣子。

enter image description here

然後,如果我試圖讓切換是否被選中,我得到一個nullPointerException

(Boolean) toggleGroup.getSelectedToggle().getUserData(); 

是否可以防止所選開關被點擊時被取消選中?

+0

'RadioButton's有你要找的功能。你可以使用那些而不是'ToggleButton's? –

回答

2

您可以嘗試以下代碼來創建持久性切換。

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

,如果你想佔鍵盤事件或代碼改變切換這只是​​響應鼠標事件,所以也許並不理想。


,我沒有試過可以在博客條目Button of Choice: Use ToggleButtons as RadioButtons定義類似,但也許更完整的方法。


也許最簡單的行爲來實現你的願望可能是使用RadioButtons而不是ToggleButtons。

另外,如果您想要像ToggleButtons這樣的按鈕而不是RadioButtons,那麼您可以嘗試下面列出的樣式技術:How to make a RadioButton look like regular Button in JavaFX

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