JavaのJRadioButtonMenuItemとは?メニュー項目の作成方法とサンプルコードを解説
JRadioButtonMenuItemは、Java SwingのJMenuItemクラスを継承したサブクラスです。同じグループに属する複数のメニュー項目の中から1つだけを選択できるラジオボタン形式のメニュー項目で、選択された項目にはその選択状態が表示されます。
複数のJRadioButtonMenuItemをButtonGroupオブジェクトに追加することでボタングループを形成できます。グループ内のいずれかの項目が選択されると、その他のすべてのラジオボタンメニュー項目は自動的に選択解除されます。この仕組みにより、設定画面などで「排他的な選択」を簡単に実現できます。
構文
public class JRadioButtonMenuItem extends JMenuItem implements Accessible
主なコンストラクタ
JRadioButtonMenuItem()… テキストなしの空のメニュー項目を作成JRadioButtonMenuItem(Action a)… 指定したActionからプロパティを取得して作成JRadioButtonMenuItem(String text)… 指定したテキストを持つメニュー項目を作成JRadioButtonMenuItem(String text, boolean selected)… テキストと初期選択状態を指定して作成
実装例
import javax.swing.*;
import java.awt.*;
public class JRadioButtonMenuItemTest extends JFrame {
private JMenuBar mb;
private JMenu m;
private JRadioButtonMenuItem m1, m2, m3, m4;
private ButtonGroup bg;
public JRadioButtonMenuItemTest() {
setTitle("JRadioButtonMenuItem Test");
setLayout(new FlowLayout());
// ボタングループを作成(排他的選択のため)
bg = new ButtonGroup();
mb = new JMenuBar();
m = new JMenu("Menu");
m1 = new JRadioButtonMenuItem();
m2 = new JRadioButtonMenuItem(new javax.swing.text.DefaultEditorKit.BeepAction());
m3 = new JRadioButtonMenuItem("Item 3");
m4 = new JRadioButtonMenuItem("Item 4", true); // 初期状態で選択
m1.setText("Item 1");
m1.setFont(new Font("Tahoma", Font.PLAIN, 11));
m1.setSelected(true);
m2.setAccelerator(KeyStroke.getKeyStroke("ctrl 2")); // ショートカットキー設定
m3.setEnabled(false); // 項目を無効化
// グループに追加
bg.add(m1);
bg.add(m2);
bg.add(m3);
bg.add(m4);
// メニューに追加
m.add(m1);
m.add(m2);
m.add(m3);
m.add(m4);
mb.add(m);
setJMenuBar(mb);
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new JRadioButtonMenuItemTest();
}
}
実行結果

ポイントまとめ
setSelected(true)で初期選択状態を設定できます。setAccelerator(KeyStroke.getKeyStroke("ctrl 2"))のようにショートカットキーを割り当てられます。setEnabled(false)で特定の項目を無効化できます。- 同一の
ButtonGroupに追加された項目は、必ず1つだけが選択される排他的な動作になります。
-
JavaのJTableセルにJRadioButton(ラジオボタン)を追加・挿入する方法
JTableはJComponentクラスのサブクラスであり、情報を複数の行(Row)と列(Column)で表示するテーブルを作成するために使用できるSwingコンポーネントです。JTable上で値が選択されるとTableModelEventが生成され、このイベントはTableModelListenerインターフェースを実装することによって処理されます。 JTableのセルにラジオボタン(JRadioButton)を追加・挿入したい場合は、TableCellRendererインターフェースとDefaultCellEditorクラスをそれぞれカスタマイズします。レンダラーがセルの「表示」を担当し、
-
Javaでカウンタープログラムを実装する方法をわかりやすく解説
この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*