انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: آموزش کار با JProgressBar در جاوا با یک مثال ساده  (دفعات بازدید: 1939 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین سید امیر موسوی

  • Jr. Member
  • *
  • ارسال: 27
خوب دوستان عنوان گویاست پس بریم سراغ کد:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.html.*;

public class SwingProgressBar {
   
    Timer time;
    JProgressBar p;
    JPanel panel;
    JFrame frame;
    JButton btn;
    JLabel lbl;
    int i;
   
    public SwingProgressBar() {
       
        frame = new JFrame();
        panel = new JPanel();
        btn = new JButton("Start");
        lbl = new JLabel("Ready");
        i = 0;
        p=new JProgressBar(0, 100);
        p.setValue(0);
        p.setStringPainted(true);
        btn.addActionListener(new Action());
        panel.setLayout(new BorderLayout());
       
        panel.add(btn, BorderLayout.NORTH);
        panel.add(p, BorderLayout.CENTER);
       
        panel.add(lbl, BorderLayout.SOUTH);
       
        frame.setLayout(new FlowLayout());
       
        frame.setContentPane(panel);
       
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
       
        time = new Timer(1000, new ActionListener() {
           
            @Override
            public void actionPerformed(ActionEvent e) {
               
                if (i == 100) {
                   
                    Toolkit.getDefaultToolkit().beep();
                    time.stop();
                   
                    btn.setEnabled(true);
                    p.setValue(0);
                    String str = "Down Complete!";
                    lbl.setText(str);
                   
                }
               
                i += 1;
               
                p.setValue(i);
            }
        });
       
    }
   
    class Action implements ActionListener {
       
        @Override
        public void actionPerformed(ActionEvent e) {
           
            btn.setEnabled(false);
            i = 0;
            String str = "Downloading ...";
            lbl.setText(str);
            time.start();
           
           
        }
    }
   
    public static void main(String[] args){
   
        SwingProgressBar s=new SwingProgressBar();
    }
}

این کد رو توضیح می دم:
p=new JProgressBar(0, 100);
در این خط ما یک شی از کلاس JProgressBar ساختیم و محدوده ی اون رو از 0 تا 100 قرار دادیم.

حالا بریم سراغ کد زیر : time = new Timer(1000, new ActionListener() {
           
            @Override
            public void actionPerformed(ActionEvent e) {
               
                if (i == 100) {
                   
                    Toolkit.getDefaultToolkit().beep();
                    time.stop();
                   
                    btn.setEnabled(true);
                    p.setValue(0);
                    String str = "Down Complete!";
                    lbl.setText(str);
                   
                }
               
                i += 1;
               
                p.setValue(i);
            }
        });
در اینجا یک شی از کلاس Timer ساختیم، دقت کنید که این کلاس در بسته ی java.swing هست و نه در java.util و این دو کلاس اگرچه هم نام هستن ولی باهم متفاوتند.
کد :
time = new Timer(1000, new ActionListener() {اینجا یک شی جدید ساختیم از کلاس Timer که با تاخیر 1000 میلی ثانیه معادل یک ثانیه کار می کنه و بعد به عنوان یک ایونت یک کلاس بی نام رو بهش متصل کردیم. دقت کنید که هروقت تابع start از این کلاس یعنی timer صدا زده میشه در واقع هر بار actionPerformed  مربوط به ActionListener از این کلاس صدا زده میشه. سایر کدها به اندازه کافی گویا هستن.
« آخرین ویرایش: 04 خرداد 1391، 05:57 ب‌ظ توسط سید امیر موسوی »
لینوکس تنها یک سیستم عامل نیست، دریچه ای است برای یادگیری.