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

জাভাতে GridBagConstraints ক্লাসের গুরুত্ব কী?

একটি GridBagLayout একটি খুব ফ্লেক্সিবল লেআউট ম্যানেজার যা আমাদের কনস্ট্রেইন্টস ব্যবহার করে কম্পোনেন্টগুলো একে অপরের সাথে সম্পর্কিতভাবে পজিশন করতে দেয়। প্রতিটি GridBagLayout সেলের একটি ডাইনামিক রেক্ট্যাঙ্গুলার গ্রিড ব্যবহার করে যেখানে প্রতিটি কম্পোনেন্ট এক বা একাধিক সেল অধিকার করে যাকে এর ডিসপ্লে এরিয়া বলা হয়। একটি GridBagLayout-এর 의해 পরিচালিত প্রতিটি কম্পোনেন্ট একটি GridBagConstraints ইনস্ট্যান্সের সাথে যুক্ত থাকে যা নির্দিষ্ট করে কম্পোনেন্টটি কীভাবে তার ডিসপ্লে এরিয়ার ভিতরে লেআউট হবে।

GridBagConstraints

আমরা একটি GridBagConstraints অবজেক্ট কাস্টমাইজ করতে পারি এর পাবলিক ইনস্ট্যান্স ভেরিয়েবল এক বা একাধিক সেট করে। এই ভেরিয়েবলগুলো কম্পোনেন্টের লোকেশন, আকার, গ্রোথ ফ্যাক্টর, অ্যাঙ্কর, ইনসেট, ফিলিং, এবং প্যাডিং নির্দিষ্ট করে।

  • gridx: একটি int ভ্যালু যা কম্পোনেন্টটি আধিকার্য করে সের leftmost সেল নির্দিষ্ট করে। gridx কলাম নির্দিষ্ট করে যেখানে কম্পোনেন্টটি রাখা হবে।
  • gridy: একটি int ভ্যালু যা কম্পোনেন্টটি আধিকার্য করে সের topmost সেল নির্দিষ্ট করে। gridy রো নির্দিষ্ট করে যেখানে এটি রাখা হবে।
  • gridheight: একটি int ভ্যালু যা একটি কম্পোনেন্ট আধিকার্য করে ভার্টিক্যাল সেলের সংখ্যা নির্দিষ্ট করে।
  • gridwidth: একটি int ভ্যালু যা একটি কম্পোনেন্ট আধিকার্য করে হরিজন্টাল সেলের সংখ্যা নির্দিষ্ট করে।
  • ipadx: একটি int ভ্যালু যা প্রতিটি কন্ট্রোলের সাথে যোগ করা ইন্টারন্যাল হরিজন্টাল প্যাডিং-এর পরিমাণ নির্দিষ্ট করে।
  • ipady: একটি int ভ্যালু যা প্রতিটি কন্ট্রোলের সাথে যোগ করা ইন্টারন্যাল ভার্টিক্যাল প্যাডিং-এর পরিমাণ নির্দিষ্ট করে।
  • insets: একটি Insets অবজেক্ট যা সেলের প্রতিটি পাশে ছেড়ে দেওয়া খালি স্পেসের পরিমাণ নির্দিষ্ট করে।
  • weightx: একটি double ভ্যালু যা অতিরিক্ত হরিজন্টাল স্পেস কীভাবে বিতরণ হবে তা নির্দিষ্ট করে যদি ফলাফল লেআউট হরিজন্টালি ছোট হয় আল্লোটেড এরিয়ার চেয়ে।
  • weighty: একটি double ভ্যালু যা অতিরিক্ত ভার্টিক্যাল স্পেস কীভাবে বিতরণ হবে তা নির্দিষ্ট করে যদি ফলাফল লেআউট ভার্টিক্যালি ছোট হয় আল্লোটেড এরিয়ার চেয়ে।
  • anchor: একটি int ভ্যালু যা একটি সেলের ভিতরে একটি কম্পোনেন্টের অ্যালাইনমেন্ট নির্দিষ্ট করে।
  • fill: একটি int ভ্যালু যা একটি সেলের অতিরিক্ত স্পেসের সাথে কী করা হবে তা নির্দিষ্ট করে।
  • RELATIVE: gridx এবং gridy ফিল্ডের জন্য, এই ফিল্ড নির্দিষ্ট করে যে কম্পোনেন্টটি শেষে যোগ করা কম্পোনেন্টের পাশে রাখা হবে। gridwidth এবং gridheight ফিল্ডের জন্য, এই ফিল্ড নির্দিষ্ট করে যে কম্পোনেন্টটি একটি রো বা কলামে শেষ থেকে দ্বিতীয় কম্পোনেন্ট হবে।
  • REMAINDER: gridwidth এবং gridheight ফিল্ডের জন্য, এই ফিল্ড নির্দিষ্ট করে যে একটি কম্পোনেন্ট একটি রো বা কলামে শেষ কম্পোনেন্ট।

উদাহরণ

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

public class GridBagLayoutTest { 
    public static void main(String[] a) { 
        JFrame frame = new JFrame("GridBagLayout Test"); 
        Container myPane = frame.getContentPane(); 
        myPane.setLayout(new GridBagLayout()); 
        GridBagConstraints c = new GridBagConstraints();  
        setMyConstraints(c,0,0,GridBagConstraints.CENTER); 
        myPane.add(getFieldPanel(),c); 
        setMyConstraints(c,0,1,GridBagConstraints.CENTER); 
        myPane.add(getButtonPanel(),c); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setSize(300, 250); 
        frame.setLocationRelativeTo(null); 
        frame.setVisible(true); 
    } 
    
    private static JPanel getFieldPanel() { 
        JPanel p = new JPanel(new GridBagLayout()); 
        p.setBorder(BorderFactory.createTitledBorder("Details")); 
        GridBagConstraints c = new GridBagConstraints(); 
        setMyConstraints(c,0,0,GridBagConstraints.EAST); 
        p.add(new JLabel("Name:"),c); 
        setMyConstraints(c,1,0,GridBagConstraints.WEST); 
        p.add(new JTextField(16),c); 
        setMyConstraints(c,0,1,GridBagConstraints.EAST); 
        p.add(new JLabel("System:"),c); 
        setMyConstraints(c,1,1,GridBagConstraints.WEST); 
        p.add(getSystemPanel(),c); 
        setMyConstraints(c,0,2,GridBagConstraints.EAST); 
        p.add(new JLabel("Language:"),c); 
        setMyConstraints(c,1,2,GridBagConstraints.WEST); 
        p.add(getLanguagePanel(),c); 
        setMyConstraints(c,0,3,GridBagConstraints.EAST); 
        p.add(new JLabel("Year:"),c); 
        setMyConstraints(c,1,3,GridBagConstraints.WEST); 
        p.add(new JComboBox(new String[] {"2019","2020","2021"}),c); 
        return p; 
    } 
    
    private static JPanel getButtonPanel() { 
        JPanel p = new JPanel(new GridBagLayout()); 
        p.add(new JButton("OK")); 
        p.add(new JButton("Cancel")); 
        return p; 
    } 
    
    private static JPanel getSystemPanel() { 
        JRadioButton winButton = new JRadioButton("Windows",true); 
        JRadioButton macButton = new JRadioButton("Mac",false); 
        ButtonGroup systemGroup = new ButtonGroup(); 
        systemGroup.add(winButton); 
        systemGroup.add(macButton); 
        JPanel p = new JPanel(new GridBagLayout()); 
        p.add(winButton); 
        p.add(macButton); 
        return p; 
    } 
    
    private static JPanel getLanguagePanel() { 
        JPanel p = new JPanel(new GridBagLayout()); 
        p.add(new JCheckBox("Java",true)); 
        p.add(new JCheckBox("Python",true)); 
        p.add(new JCheckBox("Spark",false)); 
        return p; 
    } 
    
    private static void setMyConstraints(GridBagConstraints c, int gridx, int gridy, int anchor) { 
        c.gridx = gridx; 
        c.gridy = gridy; 
        c.anchor = anchor; 
    } 
}

আউটপুট

জাভাতে GridBagConstraints ক্লাসের গুরুত্ব কী?

  1. জাভাতে Container ক্লাসের গুরুত্ব কী?

  2. জাভাতে CardLayout ক্লাসের গুরুত্ব কী?

  3. জাভাতে SwingWorker ক্লাসের গুরুত্ব কী?

  4. জাভাতে SwingUtilities ক্লাসের গুরুত্ব কী?