[English] [メニュー] [ホーム]

ラジオボタンクリックとテキストフィールド表示


---(アプリケーションの説明)---

画面の上部にラジオボタンを2つ置きます。
ラジオボタンをクリックしたらテキストフィールドに文字列を出します。
実行画面

---(ソースリスト)---

//Sample13
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Sample13 {
  private static final String window_title = "ラジオボタンクリックとテキストフィールド表示";
  private static final int window_width = 640;
  private static final int window_height = 400;
  private static final String rb1_title = "abc";
  private static final String rb2_title = "xyz";
  private static final String data1 = "あああああ";
  private static final String data2 = "んんんんんんんんんん";
  private static final int tf_size = 20;
  JTextField tf = new JTextField(Sample13.data1, Sample13.tf_size);
  // 主処理
  public static void main(final String ar[]) {
    final Sample13 sample = new Sample13();
  }
  // コンストラクタ
  public Sample13() {
    // フレームを作成
    final JFrame f = new JFrame(Sample13.window_title);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // ラジオボタンを作成
    final JRadioButton rb1 = new JRadioButton(Sample13.rb1_title, true);
    final JRadioButton rb2 = new JRadioButton(Sample13.rb2_title);
    // ボタングループにラジオボタンを追加
    final ButtonGroup bg = new ButtonGroup();
    bg.add(rb1);
    bg.add(rb2);
    // ラジオボタンにアイテムリスナを登録
    rb1.addItemListener(new SelectItemListener());
    rb2.addItemListener(new SelectItemListener());
    // ラジオボタンとテキストフィールドをレイアウト
    final JPanel p = new JPanel();
    p.add(rb1);
    p.add(rb2);
    f.getContentPane().add(p, BorderLayout.NORTH);
    final JPanel p2 = new JPanel();
    p2.add(this.tf);
    f.getContentPane().add(p2, BorderLayout.CENTER);
    // フレームを表示
    f.setSize(Sample13.window_width, Sample13.window_height);
    f.setVisible(true);
  }
  // アイテムイベントを受け取るリスナ
  class SelectItemListener implements ItemListener {
    public void itemStateChanged(final ItemEvent e) {
      // イベント発生元オブジェクト取得
      final AbstractButton sel = (AbstractButton) e.getItemSelectable();
      // 選択されているチェックボックスの場合
      if (e.getStateChange() == ItemEvent.SELECTED) {
        if (sel.getText().equals(Sample13.rb1_title)) {
          Sample13.this.tf.setText(Sample13.data1);
        } else if (sel.getText().equals(Sample13.rb2_title)) {
          Sample13.this.tf.setText(Sample13.data2);
        }
      }
    }
  }
}