حسام حداد

در مورد برنامه نویسی ، الگوریتم نویسی ، نکات ترفند ها

حسام حداد

در مورد برنامه نویسی ، الگوریتم نویسی ، نکات ترفند ها

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

آخرین نظرات
  • ۱۸ آبان ۹۵، ۱۲:۵۱ - سامان
    ای ول

پیاده سازی Timer در JSwing

سه شنبه, ۴ تیر ۱۳۹۲، ۰۱:۳۷ ب.ظ

سلام دوستان
امروز میخواهیم یک مبحث پر کاربرد در جاوا را توضیح دهیم Timer در برنامه نویسی کاربرد های بسیاری دارد از کاربرد در یک سیستم اندازه گیری زمان گرفته تا بروز رسانی زمان و تاریخ در یک برنامه تجاری.
کار با Timer در JSwing جاوا بنظر عجیب می آید چون مثل C# یا Visual Basic یک کنترل خاص به Timer اختصاص داده نشده است ( حداقل در Netbeans چنین کنترلی وجود ندارد)


خب ما فقط یک برنامه نمونه ساده برای نشان دادن چگونگی کار Timer در جاوا ارائه میدهیم
این برنامه هر یک ثانیه یکبار یک عدد به  متغیر  time اضافه کرده و مقدار آنرا در لیبل lblTimer نمایش می دهد وقتی که این مقدار به 60 رسید یعنی 1 دقیقه بعد Timer را متوقف کرده و عبارت Hello World! را در lblTimer نمایش میدهد
خب یک JFrame به نام jfrmTimer ایجاد میکنیم.
برای استفاده از Timer این فراخانی ها باید صورت بگیرد.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
خب ما به یک ActionListener برای ساختن Timer احتیاج داریم یک کلاس درونی که این Interface را پیاده سازی میکند مینویسیم.
کلاس درونی به کلاس هایی گفته میشود که درون یک کلاس دیگر هستند نه به این معنی که یک شی از آنها درون کلاس اصلی وجود دارد یعنی به کل درون کلاس اصلی تعریف میشوند.
    class TimerListener implements ActionListener{
        int time = 0;

        public void actionPerformed(ActionEvent evt){
            time++;
            lblTimer.setText(String.valueOf(time));
            if(time == 60){
                timer.stop();
                lblTimer.setText("Hello World!");
            }
        }
    }

خب حالا میتوانیم یک شی از کلاس Timer بسازیم.
ابتدا در کلاس jfrmTimer یک متغییر از نوع Timer  میسازیم .
private Timer timer;

سپس سازنده یا Constructor کلاس jfrmTimer را بروز میکنیم.
    public jfrmTimer() {
        initComponents();
        timer = new Timer(1000, new TimerListener());
        timer.setInitialDelay(0);
        timer.start(); 
        setVisible(true);
    }

آن مقداری که تو Constructor کلاس Timer براش می فرستیم در زمان تکرار بر حسب میلی ثانیه است که اینجا مقدار 1000 در نظر گرفته ایم.
InitialDelay هم زمان ایستادن تا شروع Timer برحسب میلی ثانیه هست که مقدار 0 را به آن اختصاص داده ایم.
اگر مشکلی هم در پیاده سازی داشتید میتوانید کد را از لینک زیر دانلود کنید.
Download Source (21 KB)

  • موافقین ۴ مخالفین ۰
  • ۹۲/۰۴/۰۴
  • ۱۴۳۰ نمایش
  • حسام حداد

Timer

Java

JSwing

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

نظرات (۲)

  • جابر رضاپور
  • احسنت به کارت ادامه بده
    موفق باشی
    علم یا علم مسأله اینست
    سلام
    من از اکلیپس 4.4 استفاده می کنم. موقعی که از کد شما استفاده می کنم. برناهم اجرا می شود ولی شروع به شمردن نمی کند؟؟؟؟؟؟

    ولی موعی که از کد اماده شما استفاده می کنم همه چیز درست است ولی دیزاین فرم رو نمی شه تفییر داد.
    پاسخ:
    سلام
    با استفاده از Message Box میتونید به راحتی چک کنید که آیا کد بدنه تابع Timer اجرا میشه یا نه

    JOptionPane.showMessageDialog(null, "Here!");
    

    همچنین میتونید به شکل ساده تری از Timer به صورت زیر استفاده کنید

    Timer timer= new Timer(1000,new ActionListener() {
    	public void actionPerformed(ActionEvent arg0) {
    		/* Here runs every second */
    		JOptionPane.showMessageDialog(null, "Here!");
    	}
    });
    

    بعدش برای اجرا باید تابع timer.start() رو صدا بزنید
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی