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 نظر
هدر سایت
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره معماری میکروسرویس ها (Microservices) با استفاده از Spring Boot و Spring Cloud
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
گفتگو را شروع کنید
مشاوره ،تدریس خصوصی و سفارش انجام انواع پروژه های برنامه نویسی