Nội dung
Tạo JCheckBox
Bắt sự kiện cho JCheckBox

JCheckBox là đối tượng cho phép chúng ta chọn nhiều thuộc tính. Ví dụ như khi điền thông tin một người xem có tiền, có nhà, có xe hơi không chẳng hạn. Người đó có thể có cả 3 hoặc không có một cái nào cả.

Tạo JCheckBox

Chúng ta sẽ tạo 1 JFrame có các JCheckBox như hình dưới đây:

JcheckBox in Java

JFrame gồm có 2 phần chính là phần bên trái chứa 3 JCheckBox, phần bên phải chứa 3 JLabel tương ứng. Trước tiên chúng ta sẽ tạo ra các JCheckBox trước đã.

package nguyenvanquan7826.JCheckBox;

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MyJCheckBox extends JFrame {

	private JCheckBox checkMoney, checkHouse, checkCar;
	private JLabel lbMoney, lbHouse, lbCar;

	public MyJCheckBox() {
		// add main panel
		add(createMainPanel());

		// set display
		setTitle("JCheckBox");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(200, 150);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private JPanel createMainPanel() {
		// create JPanel container three checkBox
		JPanel panelCheckBox = new JPanel(new GridLayout(4, 0, 5, 5));
		panelCheckBox.add(checkMoney = createCheckBox("Money"));
		panelCheckBox.add(checkCar = createCheckBox("Car"));
		panelCheckBox.add(checkHouse = createCheckBox("House"));

		// create JPanel Container three JLabel
		JPanel panelShow = new JPanel(new GridLayout(4, 0, 5, 5));
		panelShow.add(lbMoney = createLabel("Money"));
		panelShow.add(lbCar = createLabel("Car"));
		panelShow.add(lbHouse = createLabel("House"));

		// add panelCheckBox and panelShow to main panel
		JPanel panel = new JPanel(new BorderLayout());
		panel.add(panelCheckBox, BorderLayout.WEST);
		panel.add(panelShow, BorderLayout.CENTER);
		return panel;
	}

	// create a JCheckBox
	private JCheckBox createCheckBox(String name) {
		JCheckBox checkBox = new JCheckBox(name);
		return checkBox;
	}

	// create a JLabel
	private JLabel createLabel(String lb) {
		JLabel label = new JLabel(lb);
		label.setEnabled(false);
		return label;
	}

	public static void main(String[] args) {
		new MyJCheckBox();
	}
}

Về phần tạo giao diện mình không nói lại nữa, trong code cũng chú thích tương đối rồi. Mình chỉ nói thêm về các tạo JCheckBox.
Trong phương thức createCheckBox(String name) ta đã dùng phương thức khởi tạo JCheckBox checkBox = new JCheckBox(name); đây là cách tạo ra 1 JCheckBox với text tương ứng. Ngoài ra chúng ta có các phương thức khởi tạo khác như:
– JCheckBox(): Tạo ra 1 JCheckBox không có text, không có icon, không được check.
– JCheckBox(Action a): Tạo JCheckBox với một action
– JCheckBox(Icon icon): Tạo JCheckBox với một icon
– JCheckBox(Icon icon, boolean selected): Tạo JCheckBox có icon và thiết đặt chọn hay không.
– JCheckBox(String text, boolean selected): Tạo JCheckBox có text và thiết đặt chọn hay không.
– JCheckBox(String text, Icon icon): Tạo JCheckBox có text, có icon
– JCheckBox(String text, Icon icon, boolean selected): Tạo JCheckBox có text, có icon, thiết đặt đựoc chọn hay không.

Bắt sự kiện cho JCheckBox

Để bắt được sự kiện khi check vào checkBox ta cần addItemListener cho mỗi checkBox. Phương thức createCheckBox() được sửa lại như sau:

private JCheckBox createCheckBox(String name) {
	JCheckBox checkBox = new JCheckBox(name);
	checkBox.addItemListener(this);
	return checkBox;
}

Khi này, class của chúng ta cần implements interface ItemListener và viết đè phương thức public void itemStateChanged(ItemEvent e). Phương thức này chính là phương thức để chúng ta thực hiện công việc khi check vào checkBox. Trong ví dụ này chúng ta sẽ bắt sự kiện check mỗi khi check vào một checkBox nào đó. Sau đó sẽ kiểm tra xem checkBox đó được chọn hay bị bỏ chọn để set hiển thị hoặc không hiển thị JLabel tương ứng.

JcheckBox in Java

Để kiểm tra xem checkBox có được chọn hay không ta dùng phương thức isSelected(). Vậy toàn bộ chương trình của chúng ta sẽ được viết như sau:

package nguyenvanquan7826.JCheckBox;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MyJCheckBox extends JFrame implements ItemListener {

	private JCheckBox checkMoney, checkHouse, checkCar;
	private JLabel lbMoney, lbHouse, lbCar;

	public MyJCheckBox() {
		// add main panel
		add(createMainPanel());

		// set display
		setTitle("JCheckBox");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(200, 150);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private JPanel createMainPanel() {
		// create JPanel container three checkBox
		JPanel panelCheckBox = new JPanel(new GridLayout(4, 0, 5, 5));
		panelCheckBox.add(checkMoney = createCheckBox("Money"));
		panelCheckBox.add(checkCar = createCheckBox("Car"));
		panelCheckBox.add(checkHouse = createCheckBox("House"));

		// create JPanel Container three JLabel
		JPanel panelShow = new JPanel(new GridLayout(4, 0, 5, 5));
		panelShow.add(lbMoney = createLabel("Money"));
		panelShow.add(lbCar = createLabel("Car"));
		panelShow.add(lbHouse = createLabel("House"));

		// add panelCheckBox and panelShow to main panel
		JPanel panel = new JPanel(new BorderLayout());
		panel.add(panelCheckBox, BorderLayout.WEST);
		panel.add(panelShow, BorderLayout.CENTER);
		return panel;
	}

	// create a JCheckBox
	private JCheckBox createCheckBox(String name) {
		JCheckBox checkBox = new JCheckBox(name);
		checkBox.addItemListener(this);
		return checkBox;
	}

	// create a JLabel
	private JLabel createLabel(String lb) {
		JLabel label = new JLabel(lb);
		label.setEnabled(false);
		return label;
	}

	public static void main(String[] args) {
		new MyJCheckBox();
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		if (e.getSource() == checkMoney) {
			lbMoney.setEnabled(checkMoney.isSelected());
			return;
		}
		if (e.getSource() == checkCar) {
			lbCar.setEnabled(checkCar.isSelected());
			return;
		}
		if (e.getSource() == checkHouse) {
			lbHouse.setEnabled(checkHouse.isSelected());
			return;
		}
	}
}

Đọc thêm: class JCheckBox, use JCheckBox

Advertisements