একজন সুইং ওয়ার্কার ক্লাস আমাদের একটি অসিঙ্ক্রোনাস করতে সক্ষম করে টাস্ক একটি কর্মী থ্রেডে (যেমন একটি দীর্ঘ-চলমান কাজ) তারপর ইভেন্ট ডিসপ্যাচ থ্রেড (EDT) থেকে সুইং উপাদান আপডেট করুন ) টাস্ক ফলাফলের উপর ভিত্তি করে। এটি জাভা 1.6 সংস্করণে চালু করা হয়েছিল৷
সুইং ওয়ার্কার ক্লাস
- The java.swing.SwingWorker ক্লাস হল একটি টাস্ক ওয়ার্কার, যেটি ব্যাকগ্রাউন্ডে সময় সাপেক্ষ কাজ করে।
- একজন সুইং ওয়ার্কার উদাহরণ 3টি থ্রেডের সাথে ইন্টারঅ্যাক্ট করে, বর্তমান থ্রেড , শ্রমিক থ্রেড , এবং ইভেন্ট ডিসপ্যাচ থ্রেড(EDT)।
- কারেন্ট থ্রেড execute() কে কল করে ব্যাকগ্রাউন্ডে কাজ শুরু করার পদ্ধতি এবং অবিলম্বে ফিরে আসে।
- কর্মী থ্রেড doInBackground() -এর আমাদের নিজস্ব সংস্করণ চালায় ব্যাকগ্রাউন্ডে একটানা পদ্ধতি।
- ইভেন্ট ডিসপ্যাচ থ্রেড (EDT) কর্মী -এ কী ঘটেছে তা আমাদের জানানোর জন্য সময়ে সময়ে জেগে ওঠে৷ থ্রেড .
- যখন DoInBackground() শেষ হয়েছে, ইভেন্ট ডিসপ্যাচ থ্রেড (EDT) আমাদের সম্পন্ন() সংস্করণ কল করে আমাদেরকে অবহিত করুন৷ পদ্ধতি।
- মধ্যবর্তী মান প্রকাশ করতে, আমরা প্রকাশ (V) কল করতে পারি doInBackground()-এ পদ্ধতি . ইভেন্ট ডিসপ্যাচ থ্রেড (EDT) আমাদের প্রক্রিয়া(তালিকা)-এর সংস্করণে কল করে আমাদের অবহিত করে পদ্ধতি।
- প্রগতি বৈশিষ্ট্য আপডেট করতে, আমরা সেটপ্রগ্রেস(i) কল করতে পারি doInBackground().-এ পদ্ধতি ইভেন্ট ডিসপ্যাচ থ্রেড (EDT) আমাদের প্রপার্টি চেঞ্জ লিস্টেনার সংস্করণে কল করে আমাদের অবহিত করে ক্লাস।
- java.swing.JProgressbar ক্লাস হল একটি UI উপাদান যা একটি SwingWorker হিসাবে বাস্তবায়িত একটি ব্যাকগ্রাউন্ড টাস্কের অগ্রগতি দেখানোর জন্য ডিজাইন করা হয়েছে উদাহরণ।
উদাহরণ
import java.awt.*;
import java.awt.event.*;;
import javax.swing.*;
public class SwingWorkerTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new GUIWorker().execute();
}
});
button.setText("Click Me !!!");
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(350, 300);
frame.setVisible(true);
}
});
}
}
class GUIWorker extends SwingWorker {
private JFrame frame = new JFrame();
private JDialog dialog = new JDialog(frame, "Swingworker Test", true);
private JProgressBar progressBar = new JProgressBar();
public GUIWorker() {
progressBar.setString("Waiting on time");
progressBar.setStringPainted(true);
progressBar.setIndeterminate(true);
dialog.getContentPane().add(progressBar);
dialog.setSize(350, 300);
dialog.setModal(false);
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);
}
@Override
protected Integer doInBackground() throws Exception {
System.out.println( "GUIWorker doInBackground()" );
Thread.sleep(10000);
return 0;
}
@Override
protected void done() {
System.out.println("done");
JLabel label = new JLabel("Task Complete");
dialog.getContentPane().remove(progressBar);
dialog.getContentPane().add(label);
dialog.getContentPane().validate();
}
} আউটপুট

