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

Java में Java Swing की आर्किटेक्चर समझाएं?

Java Swing APIs का एक समूह है जो Java प्रोग्राम्स के लिए ग्राफिकल यूज़र इंटरफेस (GUI) प्रदान करता है। Java Swing को पहले के APIs Abstract Windows Toolkit (AWT) के आधार पर विकसित किया गया था। Java Swing, AWT की तुलना में अधिक समृद्ध और परिष्कृत GUI कंपोनेंट्स प्रदान करता है। GUI कंपोनेंट्स साधारण लेवल से लेकर जटिल ट्री और टेबल तक होते हैं। Java Swing प्लगेबल लुक एंड फील प्रदान करता है ताकि Java प्रोग्राम्स का लुक एंड फील अंतर्निहित प्लेटफॉर्म से स्वतंत्र हो।

Java Swing की विशेषताएं

Java Swing प्लेटफॉर्म इंडिपेंडेंट है और MVC (मॉडल व्यू एंड कंट्रोलर) फ्रेमवर्क का पालन करता है।

  • प्लगेबल लुक एंड फील - Java Swing कई लुक एंड फील सपोर्ट करता है और वर्तमान में Windows, UNIX, Motif, और नेटिव Java मेटल लुक एंड फील सपोर्ट करता है और यूज़र्स को एप्लिकेशन को रीस्टार्ट किए बिना रनटाइम पर लुक एंड फील स्विच करने की अनुमति देता है।
  • लाइटवेट कंपोनेंट्स - सभी Java Swing कंपोनेंट्स लाइटवेट हैं सिवाय कुछ टॉप-लेवल कंटेनर्स के। लाइटवेट का अर्थ है कि कंपोनेंट Graphics ऑब्जेक्ट के ड्राइंग प्रिमिटिव्स का उपयोग करके खुद को रेंडर या पेंट करता है बजाय होस्ट ऑपरेटिंग सिस्टम (OS) पर निर्भर रहने के। परिणामस्वरूप, एप्लिकेशन प्रेजेंटेशन तेजी से रेंडर होता है और पिछले Java GUI एप्लिकेशन्स जैसे AWT की तुलना में कम मेमोरी खपत करता है।
  • सरलीकृत MVC - Java Swing एक सरलीकृत मॉडल-व्यू-कंट्रोलर आर्किटेक्चर (MVC) का उपयोग करता है जिसे मॉडल-डेलिगेट कहा जाता है। इस आर्किटेक्चर के आधार पर, प्रत्येक Java Swing कंपोनेंट में एक मॉडल और एक UI डेलिगेट होता है और MVC आर्किटेक्चर में एक व्यू और एक कंट्रोलर को लपेटता है। UI डेलिगेट स्क्रीन पेंट करने और GUI इवेंट्स हैंडल करने के लिए जिम्मेदार है। मॉडल कंपोनेंट की जानकारी या स्टेट्स को बनाए रखने का प्रभारी है।

उदाहरण

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

// मॉडल पार्ट
class Model { 
    private int x; 
    public Model() { x = 0; } 
    public Model(int x) { this.x = x; } 
    public void setX(){ x++; } 
    public int getX() { return x; } 
} 

// व्यू पार्ट 
class View { 
    private JFrame frame; 
    private JLabel label; 
    private JButton button; 
    public View(String text) { 
        frame = new JFrame("View"); 
        frame.getContentPane().setLayout(new BorderLayout()); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setSize(200,200); 
        frame.setVisible(true); 
        label = new JLabel(text); 
        frame.getContentPane().add(label, BorderLayout.CENTER); 
        button = new JButton("Button"); 
        frame.getContentPane().add(button, BorderLayout.SOUTH); 
    } 
    public JButton getButton() { return button; } 
    public void setText(String text) { label.setText(text); } 
} 

// कंट्रोलर पार्ट
class Controller { 
    private Model model; 
    private View view; 
    private ActionListener actionListener; 
    public Controller(Model model, View view) { 
        this.model = model; 
        this.view = view; 
    } 
    public void contol() { 
        actionListener = new ActionListener() { 
            public void actionPerformed(ActionEvent actionEvent) { 
                linkBtnAndLabel(); 
            } 
        }; 
        view.getButton().addActionListener(actionListener); 
    } 
    private void linkBtnAndLabel() { 
        model.setX(); 
        view.setText(Integer.toString(model.getX())); 
    } 
} 

// मेन क्लास 
public class Main { 
    public static void main(String[] args) { 
        SwingUtilities.invokeLater(new Runnable() { 
            @Override 
            public void run() { 
                try { // लुक एंड फील, Java लुक एंड फील 
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
                } catch (Exception ex) { } 
                Model model = new Model(0); 
                View view = new View("-"); 
                Controller controller = new Controller(model,view); 
                controller.contol(); 
            } 
        }); 
    } 
}

आउटपुट

एक विंडो खुलती है जिसमें एक लेबल और बटन होता है। बटन क्लिक करने पर लेबल का मान बढ़ता जाता है (0, 1, 2, 3...)।

  1. Java प्रोग्राम: ट्रैपेज़ियम (Trapezium) का क्षेत्रफल ज्ञात करें Java प्रोग्राम: ट्रैपेज़ियम (Trapezium) का क्षेत्रफल ज्ञात करें

    इस लेख में, हम समझेंगे कि ट्रैपेज़ियम का क्षेत्रफल कैसे ज्ञात करें। ट्रैपेज़ियम एक प्रकार का चतुर्भुज है जिसमें कम से कम एक जोड़ी भुजाएं एक-दूसरे के समानांतर होती हैं। ट्रैपेज़ियम की समानांतर भुजाओं को बेस कहा जाता है और असमानांतर भुजाओं को लेग्स कहा जाता है। इसे ट्रेपेजॉयड भी कहा जाता है।ट्रैपेज़िय

  1. जावा प्रोग्राम से आयत का परिमाप (Perimeter of Rectangle) निकालना जावा प्रोग्राम से आयत का परिमाप (Perimeter of Rectangle) निकालना

    इस लेख में हम समझेंगे कि आयत का परिमाप कैसे निकाला जाता है। आयत का परिमाप आयत की सभी भुजाओं की लंबाई को जोड़कर निकाला जाता है। नीचे एक आयत का प्रदर्शन दिया गया है। आयत का परिमाप आयत की दो लंबाई और दो चौड़ाई की कुल लंबाई होती है: इनपुट मान लीजिए हमारा इनपुट है: आयत की भुजाओं की लंबाई हैं: 5, 8, 5,

  1. क्या Java में Swing थ्रेड-सेफ है? क्या Java में Swing थ्रेड-सेफ है?

    नहीं, Java Swing कंपोनेंट्स Java में थ्रेड-सेफ नहीं हैं। क्यों Swing कंपोनेंट्स थ्रेड-सेफ नहीं हैं Java Swing के थ्रेड-सेफ न होने का एक मुख्य कारण इसके कंपोनेंट्स को एक्सटेंड करने के कार्य को सरल बनाना है। Java Swing के थ्रेड-सेफ न होने का एक अन्य कारण लॉक्स प्राप्त करने और जारी करने और स्टेट को र