View Full Version : مبتدی: نحوه استفاده از تابع repaint
Masoomeh.H
جمعه 14 اسفند 1388, 22:53 عصر
سلام
من برنامه اي را درجاوانوشته ام كه صفحه ساعت را با گرفتن ساعت دقيق از سيستم نشان بده. رابطه رياضي بين عقربه هاي ساعت را پيدا كرد ولي هر بار كه زمان تغيير ميكنه نميدونم چه طور با استفاده از تابع repaint تغييرات زمان را در شكل ساعت اعمال كنم يادرواقع تابع repaintرا در main به كارببرم يا در تابعpaintComponent ؟ اگه ميشه لطفا كمك كنيد:ناراحت:
jlover
شنبه 15 اسفند 1388, 13:20 عصر
فراخانی متد ()repaint ، به سادگی باعث فراخانی متد ()paint ( یا ()paintComponent ) میشه.البته یکی دو تا کار دیگه هم میکنه به صورت خودکار ( مثل ترسیم خود پنجره ) ولی برای شما مهم عملیات ترسیم ( و/یا رنگ آمیزی ) هست که کدهاش رو در متد ()paintComponent قرار داره.
هر وقت ()repaint فراخانی بشه،کدهای پیاده شده در متد ()paintComponent هم اجرا خاهد شد
حالا دیگه به هدف شما بستگی داره که کی و کجا ، یعنی در چه موقعیتی قصد اجرای دوباره ی ترسیم ( paintComponent ) رو دارید
اینطور که من متوجه شدم شما میخاید مثلن هر یک ثانیه یا هر یک دقیقه ساعت دقیقن همون زمان رو نشون بده
خب پس هر دقیقه یا ثانیه متد repaint رو فراخونی کنید
برای مثال قطعه کد زیر رو میتونید در متد اصلی برنامه تون قرار بدید و اونجاییکه از پرینت استفاده شده،شما از repaint استفاده کنید :
long start = System.currentTimeMillis();
while ( true ) {
if( System.currentTimeMillis()-start >= 1000 )
System.out.println( start = System.currentTimeMillis() );
}
گرچه این قطعه کد هر یک ثانیه زمان سیستم رو پرینت میکنه و به نمایش میگذاره،اما این روش به هیچوجه توصیه نمیشه و راه منطقی و ساده تر استفاده از متد ()sleep از کلاس Thread هست
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.