JavaのJRadioButtonとJCheckBoxの違いとは?使い方とサンプルコードで解説
Java SwingのJRadioButtonとJCheckBoxは、どちらもJToggleButtonクラスを継承したコンポーネントです。両者の主な違いは、JRadioButtonがグループ内で一度に1つのボタンしか選択できないのに対し、JCheckBoxは複数の項目を同時に選択できるという点にあります。
JRadioButtonとは
- JRadioButtonは、選択状態・未選択状態を持つ項目を表すコンポーネントです。通常、複数のラジオボタンをグループ化してユーザーに選択肢を提供しますが、一度に選択できるのは1つのオプションのみです。
- ActionListener、ChangeListener、ItemListenerなどのリスナーインターフェースを利用してイベントを処理できます。
- ラジオボタンは複数の選択肢を表示するためにグループで使用されることが多いため、ButtonGroupクラスと組み合わせて使うのが一般的です。ButtonGroupには、グループ内で同時に1つのボタンしか選択できないという特性があり、それ自体は視覚的な外観を持ちません。
- JRadioButtonの主なメソッドには、setText()、getText()、setEnabled()、setMnemonic()などがあります。
JRadioButtonのサンプルコード
import java.awt.*;
import javax.swing.*;
public class JRadioButtonTest extends JFrame {
public JRadioButtonTest() {
super("JRadioButton Test");
JRadioButton jrb1 = new JRadioButton("Java");
JRadioButton jrb2 = new JRadioButton("Python");
JRadioButton jrb3 = new JRadioButton("Scala");
ButtonGroup group = new ButtonGroup();
group.add(jrb1);
group.add(jrb2);
group.add(jrb3);
setLayout(new FlowLayout());
add(jrb1);
add(jrb2);
add(jrb3);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,375);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JRadioButtonTest();
}
});
}
}
このサンプルでは、3つの言語(Java、Python、Scala)を選択肢として持つラジオボタンを作成し、ButtonGroupに登録しています。実行すると、いずれか1つだけを選択できるウィンドウが表示されます。
JCheckBoxとは
- JCheckBoxは、選択・未選択の状態を表す項目を表示するコンポーネントです。チェックボックスをクリックすることで、この状態を切り替えることができます。
- 標準的なJCheckBoxコンポーネントは、チェックボックス本体と、その目的を説明するラベルで構成されます。
- ItemListenerまたはActionListenerインターフェースを使ってイベントを処理できます。
- JCheckBoxの主なメソッドには、setLabel()、getLabel()、setState()、getState()などがあります。
JCheckBoxのサンプルコード
import java.awt.*;
import javax.swing.*;
public class JCheckBoxTest extends JFrame {
JCheckBoxTest() {
super("JCheckBox Test");
JLabel lblHobbies = new JLabel("Languages");
JCheckBox chkSports = new JCheckBox("Java");
JCheckBox chkMusic = new JCheckBox("Python ",true);
JCheckBox chkReading = new JCheckBox("Scala");
setLayout(new FlowLayout());
add(lblHobbies);
add(chkSports);
add(chkMusic);
add(chkReading);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,375);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JCheckBoxTest();
}
});
}
}
このサンプルでは、コンストラクタの第2引数にtrueを渡すことで、「Python」のチェックボックスを初期状態で選択済みにしています。JCheckBoxの場合、複数の項目を同時にチェックできる点がJRadioButtonとの大きな違いです。
まとめ:使い分けのポイント
ユーザーに単一の選択を求める場合(例:性別や支払い方法など排他的な選択肢)はJRadioButtonを、複数選択を許可したい場合(例:趣味や設定項目など)はJCheckBoxを使用するのが適切です。どちらもJToggleButtonを継承しているため基本的な操作方法は似ていますが、選択ルールの違いを理解して適切に使い分けましょう。
-
JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説
JavaのSwingには、ウィンドウを表示するためのトップレベルコンテナとしてJFrameとJDialogが用意されています。どちらもよく似た役割を持ちますが、動作や用途には重要な違いがあります。この記事では、それぞれの特徴をサンプルコードとともに解説し、最後に使い分けのポイントをまとめます。 JFrameとは フレームに追加されたコンポーネントは「コンテンツ」として扱われ、contentPaneによって管理されます。JFrameにコンポーネントを追加する際は、フレーム本体ではなくcontentPaneに対して追加する必要があります。 JFrameは、タイトル、境界線、(オプションで)メニュ
-
JavaのGridLayoutとGridBagLayoutの違いを徹底解説!特徴と使い分けのポイント
JavaのAWT/Swingには複数のレイアウトマネージャーが用意されていますが、その中でもGridLayoutとGridBagLayoutは、コンポーネントを格子状(グリッド)に配置するという点でよく似ています。しかし、両者には重要な違いがあります。 GridLayoutは、すべてのコンポーネントを矩形のグリッド内に配置し、領域を同じサイズの長方形に分割して、各コンポーネントをそれぞれのセルの中に収めます。一方、GridBagLayoutは柔軟性の高いレイアウトマネージャーであり、コンポーネントのサイズを揃えることなく、縦方向・横方向に整列させて配置できます。各GridBagLayoutオブ