menusearch
javapro.ir

♨️ جلسه هفتم - آموزش ساخت برنامه نمایش عکس در جاوا

جستجو
۱۳۹۸/۵/۱۴ دوشنبه
(1)
(0)
♨️ جلسه هفتم - آموزش ساخت برنامه نمایش عکس در جاوا
♨️ جلسه هفتم - آموزش ساخت برنامه نمایش عکس در جاوا

به نام خدا


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

 

در این جلسه آموزشی قصد داریم حالا عکس هایی که از کامپیوتر خواندیم و در لیست ArrayList مون ذخیره کردیم را در label برنامه نمایش دهیم.برای این کار یک متد با نام handyPlayImage تعریف کرده و دستوراتی که باعث نمایش عکس در برنامه می شود را در آن می نویسیم. تصویر(1)


آموزش پروژه محور زبان برنامه نویسی جاوا
 

 

توضیح در مورد متد handyPlayImage موجود در تصویر(1):


کار کلی این متد این است که فایل های تصویری BufferedImage یا همون عکس هامون را که در یک لیست ArrayList به نام image مربوط به کلاس Picture ذخیره شده اند را در JLabel1 برنامه نمایش دهد.

 

 💠 بررسی خط 69 تصویر(1):


✔ یک متد از نوع void با نام handyPlayImage و یک پارامتر با نام i که از نوع int هست در ورودی متد تعریف کرده ایم.


کاربرد پارامتر i چیست؟ متغیر i به عنوان index یا شماره ای برای دسرسی به خانه های آرایه مون که عکس هامون داخلش ذخیره شده ازش استفاده می کنیم. چرا آرایه؟ جلوتر محتوای ArrayList مون را داخل یک آرایه میریزیم.

 

💠 بررسی خط 72 تصویر(1):


✔ کاربرد این دستور این است که ArrayList مون را به یک آرایه یک بعدی تبدیل می کند.به عبارت دیگر محتوای درون ArrayLst مون را درون یک آرایه یک بعدی میریزیم.

 

💠 بررسی خط 74 تا 93 تصویر(1):


✔ دوستان ما قصد داریم با دکمه های Button هامون عکس ها را عقب یا جلو ببریم،در کل با کلیک بر روی هر دکمه عکس ها مون را رو به جلو یا عقب حرکت بدهیم. قراره متد handyPlayImage را در بدنه متد ActionPerformed دکمه های Button خود قرار دهیم.


متد ActionPerformed چیست؟ خب در مبحث کار با گرافیک در جاوا این متد را توضیح دادیم و باهاش کار کردیم.کاربرد این متد اینه که وقتی روی دکمه Button مون کلیک کردیم دستورات درون بدنه متد ActionPerformed  اجرا می شود.پس هر وقت قصد داشتیم با کلیک بر روی یک دکمه Button کار خاصی برامون انجام بشه ،دستورات خودمون را در بدنه متد ActionPerformed قرار می دهیم.


✔ خب عکس هامون در خانه های آرایه bfi  که از نوع کلاس BufferedImage هست ذخیره کردیم. همان طور که می دانید برای دسرسی به خانه های آرایه تنها از طریق ایندکس های آرایه یا همون شماره خانه های ارایه امکان پذیراست. ما ایندکس هامون رو چطور باید به دست آوریم؟چطور آرایه مون رو با ایندکس هامون پیمایش کنیم؟ متغیر i همون ایندکسی است که قراره با آن به خانه های آرایه دسرسی پیدا کنیم. حالا چطور متغیر i قراره مقداردهی شود؟ با دکمه های button مون این متغیر را مقدار دهی می کنیم. در کل یک شمارنده از نوع int با مقداردهی اولیه 0 با نام  counterImage در بدنه کلاس MainClass تعریف می کنیم. تصویر(2)

 

 

آموزش تصویری ساخت برنامه گرافیکی در جاوا
ما با هر بار کلیک کردن روی دکمه هامون یکی به مقدار شمارنده counterImage اضاف یا کم می کنیم. چه موقع اضاف می شود؟ زمانی که بخوایم بریم سراغ عکس بعدی که در آرایه ذخیره شده و چه موقع کم میشه؟ زمانی که بخوایم عکس قبل موجود در ارایه را نمایش بدهیم. این دستورات را در متد ActionPerformed دو دکمه JButton1 و JButton2 قرار می دهیم. تصویر(3)

 

 

یادگیری جاوا با رحمان زارعی

 


در تصویر(3) متد ActionPerformed مربوط به دکمه JButton1 را با خط چین آبی و متد ActionPerformed مربوط به دکمه JButton2 را با خط چین قرمز مشخص کرده ایم. خب کار دکمه Button هامون چی بود؟ این بود که عکس هامون را به عقب یا جلو حرکت بدهند.چگونه؟ با یک شمارنده ای که با کم یا زیاد کردنش به خانه آرایه ای که عکس هامون درونش ذخیره بود دسرسی پیدا میکردیم و به خانه بعدی ارایه یا قبلی آرایه می رویم. وقتی برنامه اجرا می شود شمارنده counterImage مقدارش صفر است و بدیهی است که خانه اول آرایه یا همون عکس اولمون نمایش داده می شود و بعد که روی دکمه باتن next کلیک کردیم یکی به مقدار متغیر counterImage اضاف می شود و به خانه بعدی آرایه یا عکس بعدی مون دسرسی پیدا می کنیم.و برعکس وقتی روی دکمه Previous کلیک کردیم یکی از مقدار شمارنده counterImage کم می شود و به خانه قبلی آرایه یا عکس قبلی مون دسرسی پیدا می کنیم.


پس با هر بار کلیک کردن روی دکمه های Button برنامه یکی به مقدار شمارنده counterImage اضاف یا ازش کم می شود و همچنین متد handyPlayImage را برای نمایش عکس هامون در JLabel صدا میزنیم.


خب دوباره برگردیم به دستورات درون متد handyPlayImage:تصویر(4)

 

 

بهترین منبع یادگیری زبان برنامه نویسی جاوا
 

✔ خب حالا متوجه شدیم پارامتر i چیه؟ پارامتر i همون شمارنده ای که از طریق دکمه هامون برای پیمایش خانه های آرایه یا عکس هامون مقداردهی می شود.


✔ دستورات شرطی در خط های 74،80،88  برای چیست؟ خب قرار شد به صورت چرخشی عکس هامون را نمایش دهیم، چرخشی یعنی چی؟ یعنی وقتی هنگام حرکت دادن عکس به آخرین عکس رسیدیم با زدن روی دکمه بعدی(next) دوباره از عکس اول شروع کنیم و وقتی از اولین عکس شروع کردیم و در صورتی که روی دکمه قبلی(Previous) کلیک کردیم برنامه آخرین عکس را نمایش دهد: تصویر(5)

 


آموزش آساده و ساده زبان برنامه نویسی جاوا
✔ تصویر(5) نمایش دهنده یک آرایه یک بعدی با طول 4 یا چهار خانه ای است که تصاویرمون درونش ذخیره شده و همان طور که می بینید چرخش نمایش تصاویر با زدن دکمه های Next و Previous را نشان می دهد. فرض کنید از خانه صفرم آرایه شروع می کنیم بدیهی است که عکس اول نمایش داده می شود، بعد با زدن دکمه Next عکس دوم تا ....عکس چهارم واقع در خانه آخر آرایه نمایش داده می شود.خب اینبار با زدن دکمه Next در خانه آخر آرایه دوباره به خانه اول آرایه بر می گردیم. حالا این حالت برای دکمه Previous برعکس دکمه Next می باشد.


 ✔ حالا تمامی دستورات شرطی در خط 74،80،88 تصویر(4) برای همین عملیات چرخش در ارایه مون می باشد.


💠 بررسی خط 75 تا 76 تصویر(4):


✔ برای اضاف کردن و نمایش عکس در JLabel1 برنامه باید فایل عکسمون را از BufferedImage به  ImageIcon تبدیل کنیم.  و در نهایت با صدا زدن متد setIcon از طریق شی jlabel1 عکسمون را به لیبل برنامه برای نمایش اضاف می کنیم.

 

دلم نیومد که شرط های درون متد  handyPlayImage واقع در تصویر(4) را براتون نگم:

 

if(i>=0 && i<bfi.length  ){
     ImageIcon icon = new ImageIcon(bfi[i]);
     jLabel1.setIcon(icon);
}

     
✔ این شرط میگه ایندکسی که قراره با ان به خانه های آرایه مون که عکسامون درونش ذخیره شده دسرسی پیدا کنیم باید بین 0 تا طول آرایه باشد.به عبارتی اگر ایندکس ما بزرگ و مساوی صفر و کوچکتر از طول ارایه بود دستور درون بلوک شرط را اجرا کن.این برای پیمایش عادی عقب یا جلو بردن عکس های درون آرایه است.

 

else if(i>=bfi.length){
         i=0;
         counterImage=0;
          ImageIcon icon = new ImageIcon(bfi[i]);
           jLabel1.setIcon(icon);
                  }


✔ قرار بود اگر به انتهای آرایه یا آخرین عکسمون رسیدیم و با زدن دکمه next بریم اول آرایه و اولین عکس را نمایش بدهیم.این شرط برا همینه، گفته اگر مقدار شمارنده بیشتر از مقدار طول آرایه شد،شمارنده رو صفر کن ،حالا وقتی شمارنده صفر میشه اولین خانه آرایه یا اولین عکسمون در لیبل نمایش داده می شود.

 

else if(i<0){
      i=bfi.length-1;
      counterImage=bfi.length-1;
          ImageIcon icon = new ImageIcon(bfi[i]);
           jLabel1.setIcon(icon);
     }


✔ قرار بود وقتی در اولین خانه از آرایه یا در حال تماشای اولین عکسمون هستیم، وقتی روی دکمه Previous کلیک کردیم بریم سراغ خانه آخر آرایه یا نمایش آخرین عکسمون ،این دستور برا همینه، گفته اگر ایندکس i کوچک تر از صفر شد یا همون منفی شد ، مقدار شمارنده را برابر طول آرایه-1 قرار بده،چرا طول آرایه منهای یک؟ چون شماره خانه های آرایه از صفر تا طول آرایه منهای یک می باشد،مثلا یک آرایه با طول چهار ،دارای خانه هایی با شماره های صفر تا 3 می باشد.

 

خب دیگه دستورات درون متد handyPlayImage را بررسی کردیم. تا اینجا چکار کردیم؟ مفاهیم درون مسئله را استخراج کردیم،طرح اولیه ظاهر گرافیکی برنامه را طراحی کردیم و بعد با دستوراتی که نوشتیم فایل های تصویری را از کامپیوتر خواندیم و در یک لیست ذخیره کردیم و بعد عکس های درون لیست را در لیبل برنامه نمایش دادیم.همچنین دستورات مربوط به حرکت تصاویر را در درون متد ActionPerformed مربوط به هر دکمه Button را پیاده سازی کردیم.تمام کدهای این جلسه آموزشی را براتون در کنار این پی دی اف به اشتراک گذاشتم.

 

خب حالا باید متدهایی که نوشتیم را در جایی مناسب خودشون قرار بدیم، برای دکمه های JButton1 وJButton2  خب متدها و دستورات شون رو در جای مناسب که همون در بدنه متدهای jButton1ActionPerformed و jButton2ActionPerformed بود قرار دادیم. خب قرار بود با زدن دکمه open بتوانیم عکس های درون کامپیوتر را انتخاب کنیم.برای این کار به بخش Design مربوط به کلاس MainClass می رویم: تصویر(6)

 

 

 

آموزش ساخت پروژه درسی به زبان برنامه نویسی جاوا
 

 

 

روی آیتم open مربوط به منو برنامه دابل کلیک میکنیم که وارد محل سورس کد آن شویم: تصویر(7)

 


آموزشگاه رایگان زبان برنامه نویسی جاوا
 

✔ در تصویر(7) خط 195 تا 198 متد jButton1ActionPerformed مربوط به دکمه jbutton1 است.وقتی شما روی دکمه next کلیک می کنید دستورات درون این متد اجرا می شود. خط 205 تا 208 مربوط به دکمه jbutton2 است.وقتی شما روی دکمه previous کلیک می کنید دستورات درون این متد اجرا می شود.


✔ در تصویر(7) خط 200 تا 203 متد jMenuItem1ActionPerformed قرار دارد.چه موقع این متد صدا زده میشه و دستورات درونش اجرا میشه؟ زمانی که شما آیتم open مربوط به منو File را انتخاب کنید یا روش کلیک کنید این متد صدا زده میشه باز چرا؟! چون آیتم open در اصل همون jMenuItem1 است که text ان را open گذاشتیم. حالا کدام متدهایی که نوشتیم را باید در بدنه متد jMenuItem1ActionPerformed قرار بدیم که وقتی روی آیتم open کلیک کردیم اجرا شوند؟ دو متد readImage و handyPlayImage قرار می دهیم.چرا؟ ابتدا ما نیاز داریم با زدن دکمه open موجود در منو عکس هامون رو انتخاب کنیم. تصویر(8)

 

 

 

دانلود کتاب رایگان آموزش ساخت برنامه ویندوزی با جاوا
 

 

بعد با انتخاب عکس هامون گزینه open که در تصویر(9) به ان اشاره کردیم را انتخاب می کنیم.

 

 


جاوا را ساده آسان شیرین بنوشید
 

 

در نهایت نتیجه به صورت تصویر(10) خواهد بود:

 

 

 

ساده ترین آموزشگاه زبان برنامه نویسی جاوا
 

برمی گردیم دوباره به سورس کدهامون،چطور شد که با زدن دکمه Open تونستیم عکس هامون رو بگیریم و در JLabel1 نمایش بدهم؟ تصویر(11) را ببینید.

 


آموزشگاه زبان برنامه نویسی جاوا
 

✔ همان طور که در تصویر(11) مشاهده می کنید، در بدنه متد jMenuItem1ActionPerformed متدهای readImage و handyPlayImage را صدا زده ایم. متد readImage کار انتخاب کردن تصاویر را و متد handyPlayImage کار نمایش تصاویر را انجام میدهد.


✔چرا ورودی متد handyPlayImage را 0 قرار دادیم؟ برای این که به اولین خانه آرایه ای که تصاویرمون در آن ذخیره شده است دسرسی پیدا کنیم و اولین عکسمون را نمایش بدهیم.

 

خب تا اینجا کار انتخاب فایل های تصویری مون و نمایش انها در Jlabel1 را انجام دادیم. همچنین با دکمه های next و previous می توانیم عکس ها را جلو یا عقب ببریم. همه چی حل شده به جز یک مورد! کدوم مورد؟ به تصویر(10) توجه کنید! تصاویرمون فیت و مناسب در قاب لیبل نمایش داده نشده است.چرا؟ چون سایز و اندازه هر تصویر با اندازه لیبل ما متفاوت است. تکلیف چیست؟ باید با دستوری مشخص اندازه تصاویری که از کامپیوتر میخوانیم را تنظیم کنیم.چگونه؟ ان شاالله در جلسه بعدی به این مورد می پردازیم.


تذکر مهم: تمام جلسات آموزشی پروژه محور برنامه نمایش عکس در جاوا به صورت یک PDF به همراه سورس کد جلسه مربوطه می باشد. تمام سورس کدهای این جلسه آموزشی را میتوانید در سایت www.javapro.ir به آن دسرسی داشته باشید.


دوست من آرزوی سعادت و کامیابی رو برات دارم،خدانگهدار


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

 

 

کانال تلگرام آموزش جاوا

 

 

دانلود رایگان کتاب اموزش زبان برنامه نویسی جاوا

لینک دانلود کتاب + سورس کد این جلسه آموزشی

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا 
عضو کانال تلگرام ما شوید.

 

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر
شرکت سازنده