خلاصه مطلب
در این جلسه اموزشی گرافیک در جاوا JCheckBox یکی از کلاس های کتابخانه Swing در جاوا را بررسی کرده ایم.
فهرست جلسات آموزش گرافیک در جاوا
جلسه اول | معرفی Swing در جاوا
جلسه دوم | کلاس JButton در جاوا
جلسه سوم | کلاس JLabel در جاوا
جلسه چهارم | کلاس JTextField درجاوا
جلسه پنجم | کلاس JTextArea در جاوا
جلسه ششم | کلاس JPasswordField در جاوا
جلسه هفتم | کلاس JCheckBox در جاوا
جلسه هشتم | کلاس JRadioButton در جاوا
جلسه نهم | کلاس JComboBox در جاوا
جلسه دهم | کلاس JTabel در جاوا
جلسه یازدهم | کلاس JOptionPane در جاوا
جلسه دوازدهم | ساخت منو گرافیکی در جاوا
جلسه سیزدهم | کلاس JPopupMenu در جاوا
جلسه چهاردهم | کلاس JSeparator در جاوا
جلسه پانزدهم | کلاس JProgressBar در جاوا
جلسه شانزدهم | کلاس JTree در جاوا
جلسه هفدهم | کلاس JColorChooser
جلسه هجدهم | کلاس JSlider در جاوا
جلسه نوزدهم | کلاس JSpinner در جاوا
جلسه بیستم | کلاس JPanel در جاوا
جلسه بیست و یکم | کلاس JFileChooser در جاوا
جلسه بیست و دوم | کلاس JLayeredPane در جاوا
جلسه بیست و سوم | استفاده از ToolTip در جاوا
جلسه بیست و چهارم |تغییر آیکون Frame در جاوا
جلسه بیست و پنجم | کلاس Graphics در جاوا
جلسه بیست و ششم | نمایش تصویر در Swing

♨️ جلسه هفتم - کلاس JCheckBox در جاوا
برای ایجاد یک چک باکس از کلاس JCheckBox شی ایجاد می کنیم. حالا این چک باکس چه شکلی هست؟! و کاربردش چیه؟! گزینه های مربع شکل که به با تیک زدن آنها کار خاصی را برای ما انجام می دهند چک باکس هستند. مثال: تصویر(1)
.png)
در تصویر(1) بخشی که با خطوط قرمز رنگ مشخص شده چک باکس (checkbox) می باشد.
• چک باکس ها دو گزینه روشن (turn) یا خاموش (off) دارند، با کلیک کردن روی یک چک باکس (checkbox) حالت روشن(on) و خاموش (off) آن تغییر می کند. گزینه روشن معادل مقدار true و گزینه خاموش معادل مقدار false می باشد.• سازنده های پرکاربرد کلاس JCheckBox :
| توصیف | سازنده |
| ایجاد یک دکمه چک باکس غیر انتخابی ( unselected) بدون متن و آیکون منظور از غیر انتخابی یعنی on یا off بودن ،true یا false بود،تیک خوردن یا نخوردن چک باکس را مشخص نکرده ایم. | JCheckBox() |
| ایجاد یک دکمه چک باکس غیر انتخابی ( unselected) همراه با متن | JChechBox(String s) |
| ایجاد یک دکمه چک باکس همراه با متن که می توانیم در پارامتر selected خاموش یا روشن بودن ، true یا false بودن آن را مشخص کنیم. | JCheckBox(String text, boolean selected( |
| ایجاد یک دکمه چک باکس که ویژگی گرفتن یک رویداد یا اکشن را دارا می باشد. | 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)
.png)
• در تصویر(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.println(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) خوهد بود:
.png)
حال با کلیک کردن یا تیک زدن چک باکس ++C خروجی بصورت تصویر (4) خواهد شد:
.png)
همان طور که در تصویر (4) مشاهده می کنید، در لیبل بالای فریم متن نمایش داده شده که بیانگر آن است که چک باکس ++C تیک خورده یا on می باشد. اگر تیک چک باکس ++C را برداریم خروجی بصورت تصویر(5) خواهد شد:
.png)
همان طور که در تصویر(5) مشاهده می کنید هنگامی که تیک چک باکس ++C را بر می دارید در لیبل بالای صفحه پیامی چاپ میشه که بیانگر این است که چک باکس off یا تیکش برداشته شده است. برای چک باکس Java نیز همین طور اتفاق می افتد و محل نمایش پیام در لیبل دیگر پایین صفحه می باشد. تصویر(6) و (7)
.png)
.png)
توضیحات برنامه:
| 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 ما نمایش می دهد.
| elselabel.setText("C++ Checkbox: " + "unchecked"); |
• در غیر این صورت یعنی اگر حالت رویداد رخ داده برابر عدد 2 بود متن درون پرانتز را در label نمایش بده.
• سایر دستورات درون کد هم مشابه هستش که درموردشون در این جلسه و جلسات قبل توضیح داده شده است. تنها راه یادگیری این مفاهیم اینه که به خودتون سخت نگیرید!! شکل قالب دریافت رویدادهای این چک باکس بد قیافه همینه!در هر مکان و هر زمان خواستید در برنامه تون چک باکس بسازید و براش عمل خاصی رو تعریف کنید باید از این دستورات ثابت استفاده کنید که نیاز به حفظ کردنشون هم نیست!! نیاز داشتید کافیه با ی جست و جوی کوتاه این کدها رو پیدا کنید و ازشون استفاده کنید! تنها شما فقط باید یادبگیرید که دقیقا چه میخواید!!!!!
................ادامه این جلسه آموزشی را در لینک زیر بصورت پی دی اف شده مرتب دانلود کنید.

این جلسه آموزشی را می توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)لینک دانلود
.png)
.png)

