Swing/ButtonGroupEmptySelection のバックアップの現在との差分(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ButtonGroupEmptySelection へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: ButtonGroupEmptySelection title: ButtonGroup内のボタンが選択されているかを確認する tags: [ButtonGroup, JToggleButton] author: aterai pubdate: 2018-12-10T16:19:43+09:00 description: ButtonGroup内のボタンが1つも選択されていない状態かどうかを確認します。 image: https://drive.google.com/uc?id=1EFXEFMWUlrctxFnVQEQbK1zeW3wSIhoROw --- * 概要 [#summary] `ButtonGroup`内のボタンが`1`つも選択されていない状態かどうかを確認します。 #download(https://drive.google.com/uc?id=1EFXEFMWUlrctxFnVQEQbK1zeW3wSIhoROw) * サンプルコード [#sourcecode] #code(link){{ ButtonGroup bg = new ToggleButtonGroup(); JPanel p = new JPanel(); Stream.of("A", "B", "C").map(JToggleButton::new).forEach(r -> { r.setActionCommand(r.getText()); p.add(r); bg.add(r); }); JLabel label = new JLabel(); JButton button = new JButton("check"); button.addActionListener(e -> { String txt = Optional.ofNullable(bg.getSelection()) .map(b -> String.format("\"%s\" isSelected.", b.getActionCommand())) .orElse("Please select one of the option above."); label.setText(txt); // ButtonModel bm = bg.getSelection(); // if (bm != null) { // label.setText(String.format("\"%s\" isSelected.", bm.getActionCommand())); // } else { // label.setText("Please select one of the option above."); // } }); }} * 解説 [#explanation] 上記のサンプルでは、`ButtonGroup`内のボタンが`1`つも選択されていない状態かどうかを`ButtonModel#getSelection()`メソッドが`null`を返すかどうかで確認しています。 - `ButtonGroup`内のボタンが`1`つも選択されていない状態かどうかを`ButtonModel#getSelection()`メソッドが`null`を返すかどうかで確認 - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/ButtonGroup.html#getSelection-- ButtonGroup#getSelection()]メソッドのドキュメントには「選択されたボタンのモデルを返します。」とだけ解説されており、`1`つも選択されていない場合は何を返すかの記述がない -- `ButtonModel`のソースコードではその場合`null`を返す実装になっている - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/ButtonGroup.html#getSelection-- ButtonGroup#getSelection() (Java Platform SE 8)]には「選択されたボタンのモデルを返します。」とだけ解説されており、`1`つも選択されていない状態で何が返されるかは記述されていない -- `ButtonModel`のソースコードではその場合`null`が返る実装になっている * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/ButtonGroup.html#getSelection-- ButtonGroup#getSelection() (Java Platform SE 8)] - [[ButtonGroup中にある選択状態のJToggleButtonをクリックして選択解除可能にする>Swing/ToggleButtonGroup]] - [[ButtonGroup内のJRadioButtonなどの選択をクリア>Swing/ClearGroupSelection]] * コメント [#comment] #comment #comment