در این قسمت تیم کدگیت را با آموزش JCheckBox در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
Java Swing
Swing قسمتی از کلاسهای پایهای جاوا بوده و برای طراحی و ساخت نرمافزارهای Window Base ساخته شده است. قبل از Swing کتابخانهای به نام AWT بوده است. قابلیتهایی مانند Light Weight (کم وزنی) و Customizable بودن، توانسته Swing را برتر از AWT قرار دهد. در این آموزش از کلاسهای Swing برای ساخت یک JCheckBox استفاده میکنیم.
JFrame
JFrame در جاوا یک پنجره است که میتوان در آن Componentهایی مانند Jbutton، JLable، JTextField و …. قرار داد. همچنین میتوان هر کدام از Componentها را در Frame به صورت جدا صدا زده و به آنها دسترسی پیدا کرد. کمپوننتهای Swing باید حتما به JFrame اضافه شوند.
JCheckBox در جاوا
JCheckBox در جاوا برای ساخت یک چک باکس در Frame استفاده میشود. همانطور که میدانید چک باکس میتواند فعال (On) یا غیرفعال (Off) باشد. در این قسمت ما دو مثال از JCheckBox خواهیم زد. مثال اول دو JCheckBox ساده را استفاده خواهیم کرد و درون یک Frame قرار خواهیم داد. در مثال دوم با فعال و غیر فعال کردن چک باکسها، بر روی JLable تغییر وضعیت آنها نمایش داده میشود.
مثال اول JCheckBox در جاوا
قبل از توضیحات این مثال، کد آن را ببینید:
public class CheckBoxExample {
CheckBoxExample() {
JFrame f = new JFrame("CheckBox Example");
JCheckBox checkBox1 = new JCheckBox("C++");
checkBox1.setBounds(100, 100, 50, 50);
JCheckBox checkBox2 = new JCheckBox("Java", true);
checkBox2.setBounds(100, 150, 60, 50);
f.add(checkBox1);
f.add(checkBox2);
f.setSize(400, 400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[]) {
new CheckBoxExample();
}
}
همانطور که میبینید در کد بالا ابتدا یک Frame ساخته سپس دو JCheckBox را ساخته و در Frame خود اضافه کردهایم. درون Constructor کلاس JCheckBox متنی که بر روی آن چاپ میشود را به عنوان ورودی میگیرد. با استفاده از متد Setbounds نیز محل JCheckBox درون صفحه Frame خود را تعیین کردیم.

مثال دوم JCheckBox در جاوا
در مثال دوم JCheckBox ما هدف خود را بر روی کلیک کاربر و تغییر وضعیت JCheckBox قرار دادیم. یک JLable را تعریف میکنیم که تمامی تغییرات را در JCheckBox نمایش میدهد. کد این مثال به صورت زیر میباشد:
public class CheckBoxExample {
CheckBoxExample() {
JFrame f = new JFrame("CheckBox Example");
final JLabel label = new JLabel();
label.setHorizontalAlignment(JLabel.CENTER);
label.setSize(400, 100);
JCheckBox checkbox1 = new JCheckBox("C++");
checkbox1.setBounds(150, 100, 50, 50);
JCheckBox checkbox2 = new JCheckBox("Java");
checkbox2.setBounds(150, 150, 60, 50);
f.add(checkbox1);
f.add(checkbox2);
f.add(label);
checkbox1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
label.setText("C++ Checkbox: "
+ (e.getStateChange() == 1 ? "checked" : "unchecked"));
}
});
checkbox2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
label.setText("Java Checkbox: "
+ (e.getStateChange() == 1 ? "checked" : "unchecked"));
}
});
f.setSize(400, 400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[]) {
new CheckBoxExample();
}
در کد بالا با تعریف JCheckBox ها و JLable ها و اضافه کردن آنها به صفحه کار را آغاز کردیم. سپس با نوشتن ItemListener برای هر JCheckBox، هنگام کلیک کاربر بر روی آن را دریافت کردیم. متد ItemChanged وقتی چک باکس تغییر وضعیت میدهد، اجرا میشود. با نوشتن این متد توانستیم تغییر وضعیت را برای چک باکس دریافت کرده، حال باید نوع تغییر وضعیت را بدانیم (فعال یا غیر فعال بودن) که این کار را با متد getStateChange دریافت میکنیم. در آخر متن JLable را با توجه به تغییر وضعیت چک باکس تغییر میدهیم.
