♨️ جلسه هفتم - کلاس JCheckBox در جاوا
برای ایجاد یک چک باکس از کلاس JCheckBox شی ایجاد میکنیم. حالا این چک باکس چه شکلی هست؟! و کاربردش چیه؟! گزینه های مربع شکل که به با تیک زدن آنها کار خاصی را برای ما انجام میدهند چک باکس هستند. مثال: تصویر(1)
در تصویر(1) بخشی که با خطوط قرمز رنگ مشخص شده چک باکس (checkbox) است.
• چک باکس ها دو گزینه روشن (turn) یا خاموش (off) دارند، با کلیک کردن روی یک چک باکس (checkbox) حالت روشن(on) و خاموش (off) آن تغییر میکند. گزینه روشن معادل مقدار true و گزینه خاموش معادل مقدار false است.
• سازنده های پرکاربرد کلاس JCheckBox :
توصیف | سازنده |
ایجاد یک دکمه چک باکس غیر انتخابی ( un select ed) بدون متن و آیکون
| JCheckBox() |
ایجاد یک دکمه چک باکس غیر انتخابی ( un select ed) همراه با متن | JChechBox(String s) |
ایجاد یک دکمه چک باکس همراه با متن که میتوانیم در پارامتر select ed خاموش یا روشن بودن، true یا false بودن آن را مشخص کنیم. | JCheckBox(String text, boolean select ed( |
ایجاد یک دکمه چک باکس که ویژگی گرفتن یک رویداد یا اکشن را دارا است. | JCheckBox(Action a) |
مثال:
package swing_javalike ; import javax.swing.*; public class CheckBoxExample { CheckBoxExample(){ JFrame f= new JFrame("CheckBox Example"); JCheckBox checkBox1 = new JCheckBox("C++"); checkBox1.setBounds(100,100, 100,50); JCheckBox checkBox2 = new JCheckBox("Java", true); checkBox2.setBounds(100,150, 100,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(); }} |
خروجی: تصویر(2)
• در تصویر(2) ما دو چک باکس داریم که متن اولی ++c، تیک نخورده یا false و متن دومی Java، تیک خورده یا true است.
JCheckBox checkBox1 = new JCheckBox("C++"); checkBox1.setBounds(100,100, 100,50); |
• تعیین مختصات و ابعداد چک باکس
JCheckBox checkBox2 = new JCheckBox("Java", true); checkBox2.setBounds(100,150, 100,50); |
• ایجاد یک چک باکس با متن “Java” و انتخاب پارامتر true یعنی این که این چک باکس بصورت تیک خورده ایجاد میشود.
• تعیین مختصات و ابعداد چک باکس
f.add(checkBox1); f.add(checkBox2); f.setSize(400,400); |
• اضاف کردن چک باکس ها به فریم
• تعیین ابعاد فریم
f.setLayout(null); |
• چون فعلا از طرح بندی خاصی نمیخوایم استفاده کنیم پارامتر این متد را null قرار میدهیم.
f.setVisible(true); |
• برای نمایش فریم و تمام اجزای گرافیکی باید پارامتر این متد true باشد.
package javalike ; import javax.swing.*; import java.awt.event.*; public class CheckBoxExample { JCheckBox checkbox1, checkbox2; final JLabel label; CheckBoxExample() { JFrame f = new JFrame("CheckBox Example"); label = new JLabel(); final JLabel label2 = new JLabel(); label.setBounds(100, 20, 400, 100); label2.setBounds(100, 180, 400, 100); checkbox1 = new JCheckBox("C++"); checkbox1.setBounds(150, 100, 100, 50); checkbox2 = new JCheckBox("Java"); checkbox2.setBounds(150, 150, 100, 50); f.add(checkbox1); f.add(checkbox2); f.add(label); f.add(label2); checkbox1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == 1) label.setText("C++ Checkbox: " + " checked"); else label.setText("C++ Checkbox: " + "unchecked"); } }); checkbox2.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { System.out. print ln(e.getStateChange()); if (e.getStateChange() == 1) label2.setText("Java Checkbox: " + " checked"); else label2.setText("Java Checkbox: " + "unchecked"); } }); f.setSize(400, 400); f.setLayout(null); f.setVisible(true); } public static void main(String args[]) { new CheckBoxExample(); } } |
خروجی: هنگام اجرای برنامه خروجی بصورت تصویر(3) خوهد بود:
حال با کلیک کردن یا تیک زدن چک باکس ++C خروجی بصورت تصویر (4) خواهد شد:
همان طور که در تصویر (4) مشاهده میکنید، در لیبل بالای فریم متن نمایش داده شده که بیانگر آن است که چک باکس ++C تیک خورده یا on است. اگر تیک چک باکس ++C را برداریم خروجی بصورت تصویر(5) خواهد شد:
همان طور که در تصویر(5) مشاهده میکنید هنگامی که تیک چک باکس ++C را بر میدارید در لیبل بالای صفحه پیامی چاپ میشه که بیانگر این است که چک باکس off یا تیکش برداشته شده است. برای چک باکس Java نیز همین طور اتفاق میافتد و محل نمایش پیام در لیبل دیگر پایین صفحه است. تصویر(6) و (7)
توضیحات برنامه:
checkbox1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == 1) label.setText("C++ Checkbox: " + " checked"); else label.setText("C++ Checkbox: " + "unchecked"); } }); |
• ما وقتی روی یک چک باکس کلیک میکنیم یک رویداد یا event رخ میدهد، نظیر اکشن ها در Button و..
• ما با استفاده از متد addItemListener این رویدادها را به چک باکس خود اضاف میکنیم.
• پارامتر متد addItemListener شی ای از نوع اینترفیس ItemListener است.
• ما بصورت مستقیم شی از نوع اینترفیس ItemListener را ساخته و جایگزین پارامتر متد addItemListener میکنیم.
• بعد شی سازی از اینترفیس ItemListener، بعد از سازنده این اینترفیس دو آکولاد بازو بسته میکنیم و میان این دو آکولاد متد itemStateChanged که دارای پارامتری از نوع ItemEvent است را Override میکنیم.
• بعد از آکولاد اینترفیس ItemListener پرانتز متد addItemListener را قرار داده و علامت " ; " قرار میدهیم.
• چی شد؟ چی شد؟! جچوری شد؟! :-)
• احتمالا شما رو گیج کرده باشم! در کل شما اگر میخواید رویدادی که با کلیک کردن روی چک باکس شما رخ میدهد را دریافت کنید و عمل مورد نظر را در واکنش به آن رویداد رخ داده اجرا کنید باید با شی ایجاد شده از چک باکس خود متد addItemListener را صدا بزنید:
checkbox1.addItemListener(ItemListener arg) |
• هنگام شی سازی مستقیم از اینترفیس ItemListener تمام موارد بازنویسی یا override متد itemStateChanged و آکولادها و... به صورت خودکار ایکلیپس براتون انجام میده نگران نباشید. :-)
public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == 1) label.setText("C++ Checkbox: " + " checked"); else label.setText("C++ Checkbox: " + "unchecked"); } |
• این متد مثل سرباز آماده ای ایستاده که اگر شما کوچک ترین کلیکی بر روی چک باکس خود کنید، رویداد رخ داده که همان کلیک بر روی چک باکس هستش را دریافت کند.
if (e.getStateChange() == 1) |
• این دستور حالت رویدادی که چک باکس شما تولید کرده را بررسی میکند.
• کلیک کردن بر روی یک چک باکس از دو حالت خارج نیست :
1. اگر کلیک انجام شده روی چک باکس موجب روشن شدن(on) یا true شدن یا همون تیک خوردن چک باکس شود رویدادی که تولید میشود عدد " 1 " است.
2. در غیر این صورت یعنی اگر کلیک صورت گرفته روی چک باکس موجب برداشته شدن تیک یا false شدن انتخاب چک باکس شود، رویدادی که تولید میشود برابر عدد " 2 " میشود.
if (e.getStateChange() == 1) label.setText("C++ Checkbox: " + " checked"); else label.setText("C++ Checkbox: " + "unchecked"); } |
label.setText("C++ Checkbox: " + " checked"); |
• این دستور متن درون پرانتز را در label ما نمایش میدهد.
else label.setText("C++ Checkbox: " + "unchecked"); |
• در غیر این صورت یعنی اگر حالت رویداد رخ داده برابر عدد 2 بود متن درون پرانتز را در label نمایش بده.
• سایر دستورات درون کد هم مشابه هستش که درموردشون در این جلسه و جلسات قبل توضیح داده شده است. تنها راه یادگیری این مفاهیم اینه که به خودتون سخت نگیرید!! شکل قالب دریافت رویدادهای این چک باکس بد قیافه همینه!در هر مکان و هر زمان خواستید در برنامه تون چک باکس بسازید و براش عمل خاصی رو تعریف کنید باید از این دستورات ثابت استفاده کنید که نیاز به حفظ کردنشون هم نیست!! نیاز داشتید کافیه با ی جست و جوی کوتاه این کدها رو پیدا کنید و ازشون استفاده کنید! تنها شما فقط باید یادبگیرید که دقیقا چه میخواید!!!!!
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |