Java 入門

ホーム > Swing のコンポーネント > チェックボックス JCheckBox

チェックボックス JCheckBox

チェックボックスを実装しているのは JCheckBox クラスです。

JCheckBox オブジェクトを作成して、コンテナに add すれば GUI に表示されます。

ラベルは下の例のようにコンストラクタに文字列を渡すか、あるいはオブジェクトを作成してから setText メソッドを呼ぶことで設定できます。

チェックボックスのチェックの状態は isSelected メソッドで取得できます。チェックされているときは true を返し、チェックされていない場合は false を返します。

チェックのアクションリスナーは、JButton などと同様に addActionListener メソッドで ActionListener インターフェイスを実装したクラスのインスタンスをセットします。

package com.keicode.java.testapp;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class JCheckBoxTest1 extends JFrame {

	JCheckBox chk1;
	
	public JCheckBoxTest1() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
		setSize(300, 100);
		
		chk1 = new JCheckBox("Checkbox 1");
		chk1.addActionListener(new CheckAction());
		add(chk1);		
	}
	
	class CheckAction implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("Checked: " + chk1.isSelected());
		}
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				JCheckBoxTest1 app = new JCheckBoxTest1();
				app.setVisible(true);
			}
		});
	}
}

アクションリスナーで、チェック状態の有無によって直ちに反応したい場合の方法として、一つ目の方法として上の方法です。 JCheckBox のクラスフィールドを作成し、そこにチェックボックスのインスタンスを設定し、アクションリスナの actionPerformed メソッドでフィールドから参照する方法です。

もうひとつは、インスタンスに名前を割り当て、アクションリスナーにてその名前を参照する方法です。

名前は setName メソッドで割り当てることができます。

ちなみに setName メソッドは、javax.swing.JComponent の親の java.awt.Component のメソッドなので JComponent 全てに共通して利用可能です。

package com.keicode.java.testapp;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class JCheckBoxTest1 extends JFrame {

	public JCheckBoxTest1() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
		setSize(300, 100);
		
		JCheckBox chk1 = new JCheckBox("Checkbox 1");
		chk1.addActionListener(new CheckAction());
		chk1.setName("Foo");
		add(chk1);		
	}
	
	class CheckAction implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			JCheckBox s = (JCheckBox) e.getSource();			
			System.out.println("Selected: " + s.isSelected());
			System.out.println("Name: "+ s.getName());
		}
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				JCheckBoxTest1 app = new JCheckBoxTest1();
				app.setVisible(true);
			}
		});
	}
}

複数のチェックボックスが似た動作をする場合には、ひとつのアクションリスナーに処理を実装するほうが望ましいので、 後者を選択するとよいでしょう。

ホーム > Swing のコンポーネント > チェックボックス JCheckBox