پلتفرم Java SE با محیط توسعه IDE) NetBeans) ؛ (15)

استفاده درست از مبحث وراثت و سازنده در ایجاد JFrame و کامپوننت به صورت استاندارد ابتدا به دو طریق یک JFrame ایجاد می کنیم.
يکشنبه، 27 بهمن 1392
تخمین زمان مطالعه:
موارد بیشتر برای شما
پلتفرم Java SE با محیط توسعه IDE) NetBeans) ؛ (15)
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)

 

مترجم:حبیب الله علیخانی
منبع:راسخون



 
استفاده درست از مبحث وراثت و سازنده در ایجاد JFrame و کامپوننت به صورت استاندارد
ابتدا به دو طریق یک JFrame ایجاد می کنیم.
حالت اول : اگر یک کلاس (به نام JFrame1) از طریق New > JFrame Form.. ایجاد می کنیم، بدنه سورس آن به صورت زیر خواهد بود:
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
خروجی بعد از اجرا، هم فرم دارد و هم اگر چیزی چاپ شود و یا کاربر وارد کند در پنجره ی output پایین خواهیم دید.(در بخش swing control ها دیدیم)
حالت دوم : اما وقتی یک کلاس (به نام JFrame2) را از طریق New > Java Class ایجاد می کنیم، بدنه سورس آن به صورت زیر خواهد بود:
package JFrame;
public class JFrame2 {
}
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
در این حالت کلاس ما گرافیکی نیست و خروجی بعد از اجرا، فرم ندارد و فقط در پنجره ی output پایین خروجی را خواهیم دید. اما اگر بخواهیم در این حالت کلاس ما گرافیکی باشد، کلاس ما می تواند با کلمه ی کلیدی extends از کلاس JFrame ارث بری کند و اینجاست که ما کلاسمان را به صورت گرافیکی تعریف کردیم(چون کلاسمان از JFrame مشتق شده پس به تمامی مشخصات و Property های آن دسترسی دارد). اکنون برای نمایش کلاسمان باید (درتابع main) از آن نمونه بسازیم و کدهای نمایش فرم را وارد کنیم. این مبحث را در بخش واسط های گرافیکی در جاوا(chapter-10-GUI-Swing-Frame) کامل توضیح دادیم و این کد ها را در پروژه های بخش swing ها هم می بینید.
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
اما مطلبی که است، این است که ما روش دوم را ترجیح می دهیم چون می توانیم برای کلاسمان یک سازنده بنویسیم(می دانیم که سازنده برای مقدار دهی اولیه می باشد و هم نام کلاس است).
پس می توان دو خط زیر( بجز setVisible) را در سازنده (هم نام کلاس به نام JFrame2) نوشت:
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
اما زمانیکه این کد ها را سازنده می نویسیم دیگر از نام نمونه ی jf استفاده نمی کنیم چون نمی خواهیم این مقادیر اولیه مختص jf شود، بلکه می خواهیم هر بار از روی کلاس JFrame2 نمونه می سازیم، دارای این خاصیت باشند. در اینجاست که از کلمه ی کلیدی this استفاده می کنیم که this به خود کلاس اشاره می کند:
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
این یک استفاده درست از مبحث وراثت وسازنده است.
دو خط کد زیر را هم می توان به طور پیشرفته تر نوشت و خلاصه سازی کرد :
JFrame2 jf=new JFrame2();
jf.setVisible(true);
بجای این دو خط، از یک خط زیر استفاده می کنیم که به محض ایجاد، نشان داده می شود(visible آن true می شود) و ما به آبجکت jf دسترسی نداریم. و همه ی کارها سازنده انجام می دهد و ما نیازی به آن نداریم.
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
می بینیم کد نویسی کمتر شده است.
کلمه ی this
در قسمت های قبل ما از واژه ای بنام this استفاده کردیم. این کلمه به معنای شی جاری می باشد و به برنامه نویس کمک می کند تا سطح دید خود را در برنامه مشخص کند. با استفاده از کلمه this ما به JDK اعلام می کنیم که متغیر مد نظر ما متغیر مربوط به کلاس است.
این نکته را به خاطر داشته باشید که می توانیم به جای کلمه this از نام کلاس هم استفاده کنیم. مثلا در کلاس student ، می خواهیم سن(age) را چاپ کند:
System.out.println(this.age);
System.out.print(student.age);
اکنون می خواهیم به کلاسمان، کامپوننت اضافه کنیم مانند JPanel :
در این حالت، آن را در متد main و متد سازنده تعریف نمی کنیم. بلکه آن را به صورت اعضای کلاس معرفی می کنیم و چون می خواهیم به صورت اعضای کلاس معرفی کنیم، به صورت سراسری تعریف می کنیم. سپس در متد سازنده آن را new می کنیم. کد استاندارد به این صورت است که همه ی اشیائی که قرار است new شوند، در متد سازنده new شوند.
اکنون کد را به صورت زیر تغییر می دهیم و خروجی را هم مشاهده می کنید:
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)
برای اینکه این مطلب را بهتر فرا بگیرید، مثال دیگری را در نظر می گیریم:
می خواهیم دکمه(Button) ی Exit را برای فرم تعریف کنیم و با فشردن آن، فرم بسته شود.
ابتدا آن را به صورت اعضای کلاس معرفی کنیم و سپس در متد سازنده آن را new می کنیم و سپس آن را به Jpanel ، Add می کنیم .
اکنون کد را به صورت زیر تغییر می دهیم و خروجی را هم مشاهده می کنید:
پلتفرم  Java SE  با محیط توسعه ی(IDE) NetBeans- Jframe(15)

تا اینجای کد، این دکمه کاری انجام نمی دهد. ما می خواهیم به محض فشرده شدن دکمه ی "خروج" از فرم خارج شود. برای این کار باید از رویداد یا event استفاده کنیم. اکنون وارد مبحث جدیدی می شویم که اهمیت بسیاری دارد با همین خاطر آن را در بخشی مجزا مطرح می کنیم.


استفاده از مطالب این مقاله با ذکر منبع راسخون بلامانع می باشد.




 

 



مقالات مرتبط
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط
موارد بیشتر برای شما
بررسی مرقع و قطاع در خوشنویسی
بررسی مرقع و قطاع در خوشنویسی
خیابانی: آقای بیرانوند! من بخواهم از نام بردن تو معروف بشوم؟ خاک بر سر من!
play_arrow
خیابانی: آقای بیرانوند! من بخواهم از نام بردن تو معروف بشوم؟ خاک بر سر من!
توضیحات وزیر رفاه در خصوص عدم پرداخت یارانه
play_arrow
توضیحات وزیر رفاه در خصوص عدم پرداخت یارانه
حمله پهپادی حزب‌ الله به ساختمانی در نهاریا
play_arrow
حمله پهپادی حزب‌ الله به ساختمانی در نهاریا
مراسم تشییع شهید امنیت وحید اکبریان در گرگان
play_arrow
مراسم تشییع شهید امنیت وحید اکبریان در گرگان
به رگبار بستن اتوبوس توسط اشرار در محور زاهدان به چابهار
play_arrow
به رگبار بستن اتوبوس توسط اشرار در محور زاهدان به چابهار
دبیرکل حزب‌الله: هزینۀ حمله به بیروت هدف قراردادن تل‌آویو است
play_arrow
دبیرکل حزب‌الله: هزینۀ حمله به بیروت هدف قراردادن تل‌آویو است
گروسی: فردو جای خطرناکی نیست
play_arrow
گروسی: فردو جای خطرناکی نیست
گروسی: گفتگوها با ایران بسیار سازنده بود و باید ادامه پیدا کند
play_arrow
گروسی: گفتگوها با ایران بسیار سازنده بود و باید ادامه پیدا کند
گروسی: در پارچین و طالقان سایت‌های هسته‌ای نیست
play_arrow
گروسی: در پارچین و طالقان سایت‌های هسته‌ای نیست
گروسی: ایران توقف افزایش ذخایر ۶۰ درصد را پذیرفته است
play_arrow
گروسی: ایران توقف افزایش ذخایر ۶۰ درصد را پذیرفته است
سورپرایز سردار آزمون برای تولد امیر قلعه‌نویی
play_arrow
سورپرایز سردار آزمون برای تولد امیر قلعه‌نویی
رهبر انقلاب: حوزه‌ علمیه باید در مورد نحوه حکمرانی و پدیده‌های جدید نظر بدهد
play_arrow
رهبر انقلاب: حوزه‌ علمیه باید در مورد نحوه حکمرانی و پدیده‌های جدید نظر بدهد
حملات خمپاره‌ای سرایاالقدس علیه مواضع دشمن در جبالیا
play_arrow
حملات خمپاره‌ای سرایاالقدس علیه مواضع دشمن در جبالیا
کنایه علی لاریجانی به حملات تهدیدآمیز صهیونیست‌ها
play_arrow
کنایه علی لاریجانی به حملات تهدیدآمیز صهیونیست‌ها