2017-10-19 2 views
0

トグルグループには、このように表示される2つのトグルボタンがあります(黄色のトグルが選択されたトグルです)。トグルグループにトグルが選択されていないようにします - Java FX

enter image description here

しかし、私は両方のトグルが選択されていないになるとこのようになり、選択したトグルをクリックします。

enter image description here

私はトグルが選択されているかどうかを取得しようとする場合にはその後、私はnullPointerExceptionを取得します。

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

クリックすると選択したトグルが選択解除されないようにすることはできますか?

+0

'RadioButton'には、探している機能があります。 'ToggleButton'の代わりにそれらを使用できますか? –

答えて

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で定義されるかもしれ試していないが類似し、おそらくより完全なアプローチ。


おそらく、ToggleButtonsではなくRadioButtonsを使用するのが最も簡単な動作です。

さらに、RadioButtonsではなくToggleButtonsのようなスタイルのボタンを使用する場合は、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"); 
関連する問題