کلاس JProgressBar برای نمایش پیشرفت کار در برنامه استفاده میشود. برای درک بهتر از این اجزای گرافیکی در جاوا تصویر(1) را مشاهده کنید:
• مطمئنا با دیدن تصویر(1) JProgressBar برای ما آشنا خواهد بود، چرا که ان اجزای گرافیکی را در جاهای مختلف از کامپیوتر خود دیده ایم مثلا هنگام دانلود، فرآیند پیشرفت دانلود را با این ابزار گرافیکی نمایش میدهند.
• سازنده های پرکاربرد کلاس JProgressBar :
توصیف | سازنده |
ایجاد یک ProgressBar افقی بدون داشتن متن | JProgressBar() |
ایجاد یک ProgressBar افقی با مقدار minimum و maximum مشخص | JProgressBar(int min, int max) |
ایجاد یک ProgressBar با جهت یابی مشخص. منظور از جهت یابی حالت افقی یا عمودی بودن ProgressBar ما در برنامه است. برای حالت افقی دستور ثابت SwingConstants.HORIZONTAL را جایگزین پارامتر orient میکنیم. برای حالت عمودی دستور ثابت SwingConstants.VERTICAL را جایگزین پارامتر orient میکنیم. | JProgressBar(int orient) |
پارامترهای این سازنده ترکیبی از دو سازنده قبل است. یعنی ایجاد یک ProgressBar با جهت یابی و با مقدار minimum و maximum مشخص | JProgressBar(int orient, int min, int max) |
• متدهای پرکاربرد کلاس JProgressBar:
توصیف | متد |
این متد برای تعیین نمایش یا عدم نمایش یک String در ProgressBar ما استفاده میشود. | void setStringPainted(boolean b) |
این متد برای مقداردهی رشته (متن) ProgressBar ما استفاده میشود. | void setString(String s) |
این متد برای تعیین جهت قرار گیری ProgressBar ما در برنامه استفاده میشود.
| void setOrientation(int orientation) |
مثال:
package javalike ; import javax.swing.*; public class ProgressBarExample extends JFrame { JProgressBar jb; int i = 0; ProgressBarExample() { jb = new JProgressBar(0, 2000); jb.setBounds(40, 40, 160, 30); jb.setValue(0); jb.setStringPainted(true); add(jb); setSize(250, 150); setLayout(null); } public void iterate() { while (i <= 2000) { jb.setValue(i); i = i + 20; try { Thread. sleep (150); } catch (Exception e) { } } } public static void main(String[] args) { ProgressBarExample m = new ProgressBarExample(); m.setVisible(true); m.iterate(); } } |
خروجی: بعد از اجرای برنامه خروجی بصورت تصویر(2) خواهد بود:
در تصویر(2) ProgressBar از صفر شروع میشود و تا صد که پایان روند پیشرفت کار است متوقف میشود.
توضیحات:
JProgressBar jb; |
• یک شی از نوع JProgressBar تعریف میکنیم.
int i = 0 |
• متغیر i نقش شمارنده ما را بازی میکند.
jb = new JProgressBar(0, 2000); |
• این تعیین مقدار یعنی ProgressBar ما تنها بین 0 تا 2000 میتواند مقدار بگیرد.
jb.setBounds(40, 40, 160, 30); |
• تعیین مختصات و ابعاد ProgressBar ما در فریم.
1. add(jb); 2. setSize(250, 150); 3. setLayout(null); |
1. اضاف کردن شی ProgressBar خود به فریم برنامه
2. تعیین اندازه فریم برنامه
3. چون از طرح بندی خاصی در برنامه استفاده نکردیم مقدار این متد را null قرار میدهیم.
public class ProgressBarExample extends JFrame { |
• چون کلاس ما کلاس JFrameرا به ارث برده است دیگر نیازی به شی سازی از کلاس JFrame در برنامه خود نداریم به عبارتی کلاس ما خود یک JFrame حساب میشود چون فرزند کلاس JFrame هستش و تمام ویژگی ها و متدهای کلاس JFrame را به ارث برده و به آنها دسرسی دارد.
public void iterate() { while (i <= 2000) { jb.setValue(i); i = i + 20; try { Thread. sleep (150); } catch (Exception e) { } } } |
• این متد را برای تعیین روند پیشرفت کار در ProgressBar ایجاد کرده ایم.
• همان طور که ابتدا گفتیم متد setValue جریان پیشرفت کار در ProgressBar را مقداردهی میکند.
• در اینجا یک شمارنده i داریم که از صفر شروع میشود و 20 تا 20 به مقدار آن اضاف میشود تا این که مقدار آن به 2000 برسد.
i=0,20,40,60,80,100,120,…………,2000 |
jb.setValue(i); |
• هر بار که حلقه تکرار میشود مقدار شمارنده i وارد متد setValue میکنیم.
• ابتدای کار minimum مقدار ProgressBar خود را 0 و maximum مقدار ProgressBar خود را 2000 قرار دادیم. این یعنی بازه مقدارهایی که میتوانیم به ProgressBar خود دهیم بین 0 تا 2000 است. حالا اگر شمارنده خود را طوری تنظیم کنیم که مقدار بین 0 تا 2000 را بشمارد و وارد متد setValue کند، جریان پیشرفت کار بین 0% تا 100% خواهد بود.چرا که از صفر تا 2000 را شمارنده ما پیموده و وارد متد setValue کرده است. حال اگر شمارنده ما صفر تا 1000 را بپیماید و وارد متد setValue کند جریان پیشرفت کار ProgressBar ما بین 0 تا 50 درصد خواهد بود چرا که تنها نصف بازه تعیین شده را شمارش و پیموده است.
• پس تا اینجا فهمیدیم درصد پیشرفت جریان کار یک ProgressBar به شمارش شمارنده ما در بازه بین minimum تا maximum مقدار تعیین شده برای ProgressBar ما بستگی دارد، یعنی اگر مقدار شمارنده ما از minimum شروع شود و به مقدار آن در نهایت به maximum برسد یک فرآیند 0 تا 100 درصدی در ProgressBar خود شاهد خواهیم بود.
int i = 0; |
• مقدار شمارنده i وقتی وارد حلقه میشویم در ابتدا صفر است. از طرفی مقدار minimum ما نیز صفر است.این یعنی جریان روند ProgressBar ما از صفر درصد شروع میشود. چرا که ابتدا مقدار شمارنده و مقدار minimum ما برابر بوده است.
while (i <= 2000) { |
• از طرفی دیگر شرط حلقه ما این است که تا هنگامی که مقدار شمارنده i برابر 2000 نشده است دستورات درون بدنه حلقه را تکرار کن. این یعنی مقدار پیشرفت جریان ProgressBar تا 100 درصد خواهد بود چرا که مقدار شمارنده i در نهایت به 2000 که برابر مقدار maximum ما است طبق شرط حلقه خواهد رسید. اگر شرط به جای 2000 عدد 1000 بود مقدار پیشرفت جریان ProgressBar ما 50 درصد میشد چرا که ما نصف کل بازه 0 تا 2000 که ابتدا برای ProgressBar خود تعیین کرده ایم را پیموده ایم
i = i + 20; |
• مقدار شمارنده i به صورت 20 تا 20 تا افزایش مییابد.
• تا اینجا از روند کلی که ProgressBar ما پیشرفت میکند آشنا شدیم. یعنی دونستیم که اگر شمارنده بازه ی min تا max مقدار ProgressBar را بپیماید یک جریان صفر تا 100 درصد خواهیم داشت.خب سوالی که پیش میاد اینه که هنگام نمایش ProgressBar ما اعدادی بین صفر تا صد نمایش داده میشود، که گاهی این اعداد یکی یکی و گاهی دو تا دو تا و یا 10 تا 10 تا تغییر میکنند تا این که به عدد 100 برسند، میخوایم بدونیم چطور این اتفاق میافتد؟
• برای این که بدانیم جریان پیشرفت کار که از صفر درصد شروع میشود و به صد در صد خاتمه پیدا میکند، چندتا چندتا مقدار آن تغییر میکند از فرمول زیر استفاده میکنیم:
maximum بیشترین مقداری که میتوانیم به ProgressBar خود دهیم.
vc مقداری که هربار به شمارنده اضاف میشود مثلا در مثال بالا این مقدار 20 است.
c تا c تا مقدار جریان پیشرفت ProgressBar ما تغییر خواهد کرد.
مثلا با توجه به مثال بالا:
• پس یکی یکی به مقدار جریان پیشرفت کار اضاف میشود تا این که به صد برسیم.
• ابتدا مقدار جریان پیشرفت کار بین 0 تا 100 درصد بود چرا که شمارنده از صفر تا 2000 را میپیمود. با محاسبه بالا میفهمیم که نمایش جریان پیشرفت بصورت زیر خواهد بود:
0% 1% 2% 3% 4% 5% 6% ………30% 31% 32% …………98% 99% 100% |
همان طور که میبینید یکی یکی به مقدار جریان پیشرفت ProgressBar ما افزوده میشود تا به 100 درصد برسد.
دوستان این فرمول الکی ساختم!!! تنها برای درک بهتر برای تعیین مقدار پیشرفت کار یک ProgressBar اگه گیج تون میکنه کلا بیخیال توضیحات بشید و مثال رو چندبار ببینید و برای خودتون مقادیر رو تغییر بدید راحت روش کار دستتون میاد.
حال اگر شمارنده ما به جای دستور زیر
i = i + 20; |
i = i + 40; |
با محاسبه بالا میفهمیم که نمایش جریان پیشرفت بصورت زیر خواهد بود:
0% 2% 4% 6% 8% 10% 12% ………30% 32% 34% 36% …………94% 96% 98% 100% |
همان طور که میبینید دو تا دو تا به مقدار جریان پیشرفت ProgressBar ما افزوده میشود تا به 100 درصد برسد.
بازم تکرار میکنم اگر توضیحات بالا گیج کننده بود اصلا نگران نباشید! توضیحات رو بی خیال بشید و سراغ مثال و تغییر مقادیر مثال بروید یواش یواش دستتون میاد!
try { Thread. sleep (150); } catch (Exception e) { } |
• با هربار تغییر شمارنده یک مکث 150 میلی ثانیه انجام میدهیم، چرا ؟! تا نمایش جریان پیشرفت ProgressBar را بتونیم ببینیم بدون مکث کردن آنقدر سریع انجام میشه که دیگه تا برنامه رو اجرا کردید میبینید که پیشرفت کار 100 درصد شده است!!
1. ProgressBarExample m = new ProgressBarExample(); 2. m.setVisible(true); 3. m.iterate(); |
1. از کلاس خود شی ایجاد کرده ایم.
2. با شی ایجاد شده از کلاس خود این متد را صدا زده ایم. این متد باعث میشه تمام اجزای گرافیکی ما نمایش داده شود.
3. خب برای اجرای روند پیشرفت کار این متد را صدا زده ایم.
• خب میدونم شاید گیج شده اید!!! اون توضیحات رو برای روشن شدن مفاهیم مثال ها گفتم اگر اوضاع رو بهتر نکرده فقط مثال، مثال و مثال ببنید و کار کنید!!!
پیروز و موفق باشید
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |