কম্পিউটার টিউটোরিয়াল

জাভা স্বিং-এর আর্কিটেকচার ব্যাখ্যা করুন।


জাভা সুইং হল APIs-এর একটি সেট যা জাভা প্রোগ্রামের জন্য গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) প্রদান করে। জাভা সুইং以前ে APIs-наামা অ্যাবস্ট্রাক্ট উইন্ডোজ টুলকিট (AWT)-এর উপর ভিত্তি করে विकশিত। জাভা সুইং AWT-র চেয়ে অধিক সমৃদ্ধ এবং উন্নত GUI কম্পোনেন্ট প্রদান করে। GUI কম্পোনেন্টগুলি সাধারণ লেভেল থেকে জটিল ট্রি এবং টেবিল পর্যন্ত ফৌস করা হয়। জাভা সুইং প্লাগেবল লুক অ্যান্ড ফিল প্রদান করে যাতে জাভা প্রোগ্রামের লুক অ্যান্ড ফিল অন্তর্নিহিত প্ল্যাটফর্ম থেকে স্বাধীন থাকে।

জাভা সুইং-এর বৈশিষ্ট্য

জাভা সুইং প্ল্যাটফর্ম-স্বাধীন এবং MVC (মডেল ভিউ অ্যান্ড কন্ট্রোলার) ফ্রেমওয়ার্ক অনুসরণ করে।

  • প্লাগেবল লুক অ্যান্ড ফিল - জাভা সুইং একাধিক লুক অ্যান্ড ফিল সাপোর্ট করে এবং বর্তমানে উইন্ডোজ, ইউনিক্স, মোটিফ, এবং নেটিভ জাভা মেটাল লুক অ্যান্ড ফিল সাপোর্ট করে এবং ব্যবহারকারীদের অ্যাপ্লিকেশন রিস্টার্ট না করেই রানটাইমে লুক অ্যান্ড ফিল স্যুইচ করার অনুমতি দেয়।
  • লাইটওয়েট কম্পোনেন্ট - কিছু টপ-লেভেল কন্টেইনার ব্যতীত সকল জাভা সুইং কম্পোনেন্ট লাইটওয়েট। লাইটওয়েট মানে কম্পোনেন্টটি Graphics অবজেক্টের ড্রয়িং প্রিমিটিভ ব্যবহার করে নিজে রেন্ডার বা পেইন্ট করে, হোস্ট অপারেটিং সিস্টেম (OS)র উপর নির্ভর না করে। ফলে, অ্যাপ্লিকেশন প্রেজেন্টেশন দ্রুত রেন্ডার হয় এবং AWT-এর মতো পূর্বের জাভা GUI অ্যাপ্লিকেশনের চেয়ে কম মেমরি ব্যবহার করে।
  • সরলীকৃত MVC - জাভা সুইং একটি সরলীকৃত মডেল-ভিউ-কন্ট্রোলার আর্কিটেকচার (MVC) ব্যবহার করে যা এর প্রতিটি কম্পোনেন্টের কোর ডিজাইন হিসেবে মডেল-ডেলিগেট নামে পরিচিত। এই আর্কিটেকচার অনুযায়ী, প্রতিটি জাভা সুইং কম্পোনেন্টে একটি মডেল এবং একটি 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 { // লুক অ্যান্ড ফিল, জাভা লুক অ্যান্ড ফিল 
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
                } catch (Exception ex) { } 
                Model model = new Model(0); 
                View view = new View("-"); 
                Controller controller = new Controller(model,view); 
                controller.contol(); 
            } 
        }); 
    } 
}

আউটপুট

জাভা স্বিং-এর আর্কিটেকচার ব্যাখ্যা করুন।

  1. জাভা প্রোগ্রাম: বৃত্তের পরিধি (Perimeter) বের করার পদ্ধতি

  2. জাভা প্রোগ্রাম: ট্রাপিজিয়াম (Trapezium) এর ক্ষেত্রফল বের করার পদ্ধতি

  3. জাভা প্রোগ্রাম: আয়তের পরিসীমা নির্ণয়

  4. জাভাতে Swing থ্রেড-সেফ কি?