Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में SwingWorker क्लास का महत्व क्या है

एक SwingWorker क्लास हमें एक वर्कर थ्रेड में एक असिंक्रोनस टास्क (जैसे लंबे समय तक चलने वाला टास्क) करने में सक्षम बनाती है फिर टास्क परिणामों के आधार पर इवेंट डिस्पैच थ्रेड (EDT) से Swing कंपोनेंट्स को अपडेट करती है। इसे Java 1.6 संस्करण में पेश किया गया था।

SwingWorker क्लास

  • java.swing.SwingWorker क्लास एक टास्क वर्कर है, जो पृष्ठभूमि में समय लेने वाले कार्यों को निष्पादित करता है।
  • एक SwingWorker इंस्टेंस 3 थ्रेड्स के साथ इंटरैक्ट करता है, करंट थ्रेड, वर्कर थ्रेड, और इवेंट डिस्पैच थ्रेड (EDT)।
  • करंट थ्रेड बैकग्राउंड में टास्क को किक ऑफ करने के लिए execute() मेथड को कॉल करता है और तुरंत लौट आता है।
  • वर्कर थ्रेड बैकग्राउंड में लगातार doInBackground() मेथड के हमारे संस्करण को निष्पादित करता है।
  • इवेंट डिस्पैच थ्रेड (EDT) समय-समय पर जागता है ताकि हमें सूचित कर सके कि वर्कर थ्रेड में क्या हुआ।
  • जब doInBackground() समाप्त होता है, तो इवेंट डिस्पैच थ्रेड (EDT) हमारे done() मेथड के संस्करण को कॉल करके हमें सूचित करता है।
  • मध्यवर्ती मान प्रकाशित करने के लिए, हम doInBackground() में publish(V) मेथड को कॉल कर सकते हैं। इवेंट डिस्पैच थ्रेड (EDT) हमारे process(List) मेथड के संस्करण को कॉल करके हमें सूचित करता है।
  • प्रोग्रेस प्रॉपर्टी को अपडेट करने के लिए, हम doInBackground() में setProgress(i) मेथड को कॉल कर सकते हैं। इवेंट डिस्पैच थ्रेड (EDT) PropertyChangeListener क्लास के हमारे संस्करण को कॉल करके हमें सूचित करता है।
  • 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(); 
    } 
}

आउटपुट

Java में SwingWorker क्लास का महत्व क्या है

Java में SwingWorker क्लास का महत्व क्या है

  1. Java में Container क्लास का महत्व क्या है? Java में Container क्लास का महत्व क्या है?

    Container एक Container क्लास को एक विशेष घटक के रूप में वर्णित किया जा सकता है जो घटकों के संग्रह को धारण कर सकता है। दो प्रकार के स्विंग कंटेनर हैं, वे हैं टॉप-लेवल कंटेनर और लो-लेवल कंटेनर। टॉप-लेवल कंटेनर हैवीवेट कंटेनर हैं जैसे JFrame, JApplet, JWindow, और JDialog। लो-लेवल कंटेनर लाइटवेट कंटेन

  1. Java में GridBagConstraints क्लास का महत्व क्या है? Java में GridBagConstraints क्लास का महत्व क्या है?

    एक GridBagLayout एक बहुत ही लचीला लेआउट प्रबंधक है जो हमें कंस्ट्रेंट्स का उपयोग करके घटकों को एक दूसरे के सापेक्ष स्थिति देने की अनुमति देता है। प्रत्येक GridBagLayout सेल के एक गतिशील आयताकार ग्रिड का उपयोग करता है जिसमें प्रत्येक घटक एक या अधिक सेल पर कब्जा करता है जिसे इसका प्रदर्शन क्षेत्र कहा

  1. Java में SwingUtilities क्लास का महत्व क्या है? Java में SwingUtilities क्लास का महत्व क्या है?

    Java में, स्विंग कंपोनेंट्स स्क्रीन पर प्रदर्शित होने के बाद, केवल एक थ्रेड द्वारा संचालित किए जा सकते हैं जिसे इवेंट हैंडलिंग थ्रेड कहा जाता है। हम अपना कोड एक अलग ब्लॉक में लिख सकते हैं और इस ब्लॉक का रेफरेंस इवेंट हैंडलिंग थ्रेड को दे सकते हैं। SwingUtilities क्लास में दो महत्वपूर्ण स्टेटिक मेथड्