مقدمه ای بر طراحی رابط گرافیکی کاربر با استفاده از زبان برنامه نویسی جاوا


تا این قسمت از آموزش سعی ما بر این بوده تا مفاهیم تئوریک زبان محبوب برنامه نویسی جاوا را مورد بررسی قرار داده و خروجی برنامه های خود را در پنجره Console نرم افزار اکلیپس مشاهده کنیم اما این در حالی است که بسیاری از کابران کامپیوتر در مواجه با یک نرم افزار یا اپلیکیشن انتظار دارند تا با پنجره ای مواجه شوند که بدون نیاز به وارد کردن داده ها در پنجره ای شبیه به Command Line و غیره به سادگی بتوانند روی دکمه ای کلیک کنند، درگ و دراپ کنند، داده های خود را وارد فیلدهای مربوطه کنند و بسیاری امکانات دیگر.

برای این منظور برای هرچه کاربردی تر کردن برنامه های جاوای خود نیاز است تا با چیزی تحت عنوان GUI بیشتر آشنا شویم. به طور کلی منظور از GUI اصطلاح Graphical User Interface به معنی "رابط گرافیکی کاربر" است (به خاطر داشته باشیم که GUI را به صورت "جی یو آی" تلفظ کنیم). این رابط گرافیکی همان پنجره هایی است که در سیستم عامل های مختلف به منظور سهولت استفاده کاربر در نظر گرفته شده اند. به عبارت دیگر GUI به شکل های متنوعی می تواند نمود پیدا کند که از آن جمله می توان به دکمه، اسلایدر، جدول، فرم، فیلد و غیره اشاره نمود. علاوه بر این با استفاده از رابط های گرافیکی کاربر، برنامه نویس به سادگی خواهد توانست نیاز کاربران به نوشتن کد، وارد کردن داده ها به صورت دستی و همچنین استفاده از پنجره هایی مثل MS-DOS را مرتفع ساخته و کاربر صرفاً با کلیک بر روی یک دکمه دستور مد نظر خود را به سیستم ارسال نماید.

در زبان برنامه نویسی جاوا به منظور طراحی GUI می بایست از API های مخصوص این کار استفاده نمود. در واقع کلاس هایی که تحت عنوان Abstract Window Toolkit یا به صورت خلاصه AWT شناخته می شوند به راحتی این امکان را به برنامه نویس می دهند تا بتواند محیطی گرافیکی برای برنامه خود ایجاد کند.

استفاده از کلاس های AWT اگرچه قابلیت های بسیاری را در اختیار برنامه نویسان قرار می دهد اما این نکته را به خاطر داشته باشیم که این کلاس ها دارای یک نقطه ضعف بزرگ هستند و آن اینکه ظاهر برنامه ای که با استفاده از این کلاس ها طراحی می شوند در پلتفورم ها یا سیستم عامل های مختلف می تواند تا حدودی متفاوت باشد. به عنوان مثال پنجره ای که با استفاده از این کلاس ها در محیط ویندوز نمایش داده می شود تا حدودی در محیط مکینتاش متفاوت خواهد بود. علاوه بر این نحوه تعامل کاربر نیز در سیستم عامل های مختلف با برنامه های طراحی شده با کلاس های AWT می توانند تا حدودی متفاوت باشد. به عبارت دیگر برنامه ای که ما با استفاده از این کلاس ها طراحی می کنیم در هر سیستم عاملی که اجرا شود با استفاده از ابزارهای گرافیکی همان سیستم عامل تفسیر شده و در نهایت در قالبی که هماهنگ با رابط های گرافیکی آن سیستم عامل است به نمایش در می آید. نقطه بزرگ همین جا خود را نمایان می سازد چرا که برنامه ای یکسان در مثلاً محیط ویندوز یکجور نمایش داده می شود در حالی که در محیط مثلاً مکینتاش با استفاده از ابزارهای این سیستم عامل به گونه ای دیگر به نمایش در می آید و همین مسئله محبوبیت کلاس های AWT را تحت الشعاع قرار داده است. برای رفع این مشکل شرکت اوراکل API یی تحت عنوان Swing را به زبان برنامه نویسی جاوا اضافه نمود که در ادامه بیشتر با آن آشنا خواهیم شد.

در سال 1997 شرکت سان مایکروسیستمز –که بعدها توسط شرکت بزرگ اوراکل خریداری شد- API یی تحت عنوان Java Foundation Classes که امکانات طراحی رابط گرافیکی را به زبان جاوا اضافه نمود را معرفی کرد که بعدها به Swing تغییر نام داد.

در زبان برنامه نویسی جاوا Swing -مجموعه ای از کلاس های از پیش تعریف شده است که بسیاری از امکانات مورد نیاز برای ساخت GUI را برای برنامه نویس فراهم می آورد- این امکان را به برنامه نویس می دهد تا بتواند برنامه های کاربردی با استفاده از دکمه، اسلایدر، باکس های مختلف و غیره طراحی کند.

نقطه قوت این کلاس ها نسبت به AWT این است که بدون توجه به پلتفورم سعی می کنند ظاهر یکسانی را در سیستم عامل های مختلف به نمایش بگذراند و علت این مسئله هم آن است که این کلاس ها کاملاً با زبان جاوا نوشته شده اند و به هیچ وجه به سیستم عامل خاصی برای نحوه نمایش GUI تکیه نمی کنند و برای همین است که یک پنجره در هر سیستم عاملی ظاهر یکسان خواهد داشت. علاوه بر این کلاس های Swing از انعطاف پذیری بیشتری برخوردارند و نسبت به کلاس های AWT از ویژگی های به مراتب پیشرفته تری برخوردارند که از آن جمله می توان به جدول، فرم، لیست، اسکرول و غیره اشاره کرد.

از قابلیت های منحصر به فرد Swing به شخصی سازی کلاس های این API می توان اشاره کرد. در واقع برنامه نویس بسته به نیاز خود و خصوصیات پروژه ای که روی آن کار می کند به سادگی خواهد توانست رنگ، حاشیه، پس زمینه و بسیاری از ویژگی های کلاس های Swing را اصطلاحاً Customize کند تا بتواند برنامه ای منحصر به فرد طراحی کند.

یکی دیگر از قابلیت های خاص Swing تکیه آن بر Run-time است. به عبارت دیگر از آنجا که کلاس های این API در حین اجرا اعمال می شوند، حتی کاربری که با برنامه طراحی شده توسط ما کار می کند به سادگی خواهد توانست مثلا رنگ پس زمینه برنامه را تغییر داده و از این پس برنامه را با رنگ خاصی مشاهده کند (البته منوط به این است که برنامه نویس چنین امکانی را برای کاربران برنامه خود فراهم ساخته باشد).

در اینجا نیاز است تا با اصطلاح Look and Feel آشنا شویم. در برنامه نویسی به روشی که یک برنامه در سیستم عامل های مختلف نمایش داده شده و همچنین نحوه تعامل کار با نرم افزار Look and Feel گفته می شود (لازم به ذکر است که در اینجا واژه Look را می بایست به معادل "ظاهر" و واژه Feel را به معادل فارسی "عملکرد" ترجمه کنیم).

از آنجا که کلاس های AWT برای آنکه نمود خارجی پیدا کنند به کلاس های سیستم عامل وابسته هستند، از این رو می توان اصطلاح Heavyweight یا "سنگین" را به کلاس های AWT اطلاق کرد. به عبارت دیگر Look and Feel برنامه هایی که با استفاده از AWT طراحی می شوند در سیستم عامل های مختلف متفاوت است. در عوض اصطلاح Lightweight یا "سبک" را به API های Swing اطلاق می کنند چرا که بدون تکیه بر Toolkit های گرافیکی سیستم عامل ها و صرفاً با تکیه بر خود زبان جاوا نمایش داده می شوند و از همین رو است که یک برنامه گرافیکی نوشته شده با Swing در جاوا در سیستم عامل های مختلف به شکل واحدی نمایش داده می شود. به عبارت دیگر Look and Feel برنامه های نوشته شده با Swing در سیستم عامل های مختلف تا حدود زیادی یکسان است.

با ظهور Swing اکثر برنامه نویسان دیگر توجه زیادی به کلاس های AWT نمی کنند اما به خاطر داشته باشیم که برخی از کلاس های Swing هستند که از کلاس های AWT ارث بری می کنند. به عبارت دیگر AWT کاملاً "نمرده" است!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
smnavidstark77
smnavidstark77
با سلام و خسته نباشید خدمت اعضا و اساتید محترم سکان آکادمی
همونطور که من متوجه شدم برای برنامه نویسی اندروید نیازی به این مطالب نیست گویا. سوالم اینه که پس برای چه موردی این مطالب نیاز هست ؟؟ ممنونم😇
Sadra
Sadra
سلام
چرا از اینجا به بعد برای اندروید لازم نیست ؟
دستورات گرافیکی اندروید کاملا متفاوت از جاوا است ؟

و یک سوال دیگه: من شنیدم زیاد از گرافیک جاوا استفاده نمیشه (حتی برای برنامه هایی که بر اساس جاوا نوشته شدن). درسته ؟
کاربر میهمان
meableمن یک کاربر مهمان هستم
khoob bood
محمد عقبائی فرهنگ
محمد عقبائی فرهنگ
سلام و خسته نباشید. بنده میخوام که برنامه نویسی آندروید رو ادامه بدم. آیا نیازی هست که از اینجا به بعد رو هم مطالعه کنم؟
pms pms95
pms pms95
سلام خیلی ممنون از آموزش های خوب و استانداردی که میزارید من جاوا مقدماتی رو با همین سایت تموم کردم لطفا توضیح بدید که از این به بعد باید چیکار کنم و چی بخونم و کلا چجوری میتونم یه برنامه نویس حرفه ای بشم