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

জাভাতে LayoutManager কী এবং LayoutManager-এর প্রকারগুলো কী?

লেআউট ম্যানেজারগুলো আমাদের GUI ফর্মে ভিজ্যুয়াল কম্পোনেন্টগুলো কীভাবে সাজানো হবে তা নিয়ন্ত্রণ করতে সক্ষম করে কন্টেইনারের ভিতরে কম্পোনেন্টদের আকার এবং পজিশন নির্ধারণ করে।

LayoutManager-এর প্রকারগুলো

জাভাতে ৬টি লেআউট ম্যানেজার রয়েছে

  • FlowLayout: এটি একটি কন্টেইনারের কম্পোনেন্টগুলো একটি পৃষ্ঠার শব্দের মতো সাজায়। এটি উপরের লাইনটি বাম থেকে ডান এবং উপরে থেকে নিচে পূরণ করে। কম্পোনেন্টগুলো যোগ করার ক্রম অনুযায়ী সাজানো হয় অর্থাৎ প্রথম কম্পোনেন্ট উপরের বামে প্রদর্শিত হয়, যদি কন্টেইনারটি সকল কম্পোনেন্ট প্রদর্শন করার জন্য যথেষ্ট চওড়া না হয়, তবে এটি লাইনটি র‍্যাপ করে। কম্পোনেন্টগুলো বাম, কেন্দ্র বা ডান অ্যালাইন করা যেতে পারে।
  • BorderLayout: এটি সকল কম্পোনেন্টকে কন্টেইনারের প্রান্তে বা মাঝখানে সাজায় অর্থাৎ এলাকার উপর, নিচ, ডান এবং বাম প্রান্তে। উপরে বা নিচে যোগ করা কম্পোনেন্টটি এর পছন্দসই উচ্চতা পায়, কিন্তু এর প্রস্থ হবে কন্টেইনারের প্রস্থ এবং বাম বা ডানে যোগ করা কম্পোনেন্টটি এর পছন্দসই প্রস্থ পায়, কিন্তু এর উচ্চতা হবে কন্টেইনারের অবশিষ্ট উচ্চতা। কেন্দ্রে যোগ করা কম্পোনেটটিকে না পছন্দসই উচ্চতা না প্রস্থ মiladi। এটি কন্টেইনারের অবশিষ্ট এলাকাটি কভার করে।
  • GridLayout: এটি সমান আকারের সেলের একটি গ্রিডে সকল কম্পোনেন্ট সজায়, বাম থেকে ডান এবং উপরে থেকে নিচে যোগ করে। একটি সেলে শুধুমাত্র একটি কম্পোনেন্ট রাখা যায় এবং গ্রিডের প্রতিটি অঞ্চলের একই আকার থাকবে। যখন কন্টেইনার রিসাইজ করা হয়, তখন সকল সেল অটোমেটিক্যালি রিসাইজ হয়। সেলে কম্পোনেন্ট রাখার ক্রম সেগুলো কীভাবে যোগ করা হয়েছিল তার দ্বারা নির্ধারিত হয়।
  • GridBagLayout: এটি একটি শক্তিশালী লেআউট যা সকল কম্পোনেন্টকে সেলের একটি গ্রিডে সজায় এবং কন্টেইনার রিসাইজ হলে অবজেক্টের অ্যাসপেক্ট রেশিও বজায় রাখে। এই লেআউটে, সেলগুলো আকারে ভিন্ন হতে পারে। এটি কম্পোনেন্টগুলোর মধ্যে সुसंगত হরিজন্টাল এবং ভার্টিক্যাল গ্যাপ নির্ধারণ করে। এটি কলাম বা রো-এর ভিতরে কম্পোনেন্টের জন্য ডিফল্ট অ্যালাইনমেন্ট নির্দিষ্ট করার অনুমতি দেয়।
  • BoxLayout: এটি একাধিক কম্পোনেন্টকে হয় ভার্টিক্যালি বা হরিজন্টালি সজায়, কিন্তু উভয়ই নয়। কম্পোনেন্টগুলো বাম থেকে ডান বা উপরে থেকে নিচে সজানো হয়। যদি কম্পোনেন্টগুলো হরিজন্টালি অ্যালাইন করা হয়, তবে সকল কম্পোনেন্টের উচ্চতা একই হবে এবং সবচেয়ে বড় আকারের কম্পোনেন্টের সমান হবে। যদি কম্পোনেন্টগুলো ভার্টিক্যালি অ্যালাইন করা হয়, তবে সকল কম্পোনেন্টের প্রস্থ একই হবে এবং সবচেয়ে চওড়া কম্পোনেন্টের সমান হবে।
  • CardLayout: এটি একই আকারের দুই বা অধিক কম্পোনেন্ট সজায়। কম্পোনেন্টগুলো একটি ডেকে সাজানো থাকে, যেখানে সকল কার্ড একই আকারের এবং শুধুমাত্র শীর্ষ কার্ডটি যেকোনো সময় দৃশ্যমান থাকে। কন্টেইনারে যোগ করা প্রথম কম্পোনেন্টটি ডেকের শীর্ষে রাখা হয়। ডিফল্ট গ্যাপ বাম, ডান, উপর ও নিচে শূন্য এবং কার্ড কম্পোনেন্টগুলো হয় হরিজন্টালি বা ভার্টিক্যালি প্রদর্শিত হয়।

উদাহরণ

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

public class LayoutManagerTest extends JFrame { 
    JPanel flowLayoutPanel1, flowLayoutPanel2, gridLayoutPanel1, gridLayoutPanel2, gridLayoutPanel3; 
    JButton one, two, three, four, five, six; 
    JLabel bottom, lbl1, lbl2, lbl3; 
    
    public LayoutManagerTest() { 
        setTitle("LayoutManager Test"); 
        setLayout(new BorderLayout()); // JFrame-এর জন্য BorderLayout সেট করুন 
        flowLayoutPanel1 = new JPanel(); 
        one = new JButton("One"); 
        two = new JButton("Two"); 
        three = new JButton("Three"); 
        flowLayoutPanel1.setLayout(new FlowLayout(FlowLayout.CENTER)); // FlowLayout Manager সেট করুন 
        flowLayoutPanel1.add(one); 
        flowLayoutPanel1.add(two); 
        flowLayoutPanel1.add(three); 
        flowLayoutPanel2 = new JPanel(); 
        bottom = new JLabel("This is South"); 
        flowLayoutPanel2.setLayout (new FlowLayout(FlowLayout.CENTER)); // FlowLayout Manager সেট করুন 
        flowLayoutPanel2.add(bottom); 
        gridLayoutPanel1 = new JPanel(); 
        gridLayoutPanel2 = new JPanel(); 
        gridLayoutPanel3 = new JPanel(); 
        lbl1 = new JLabel("One"); 
        lbl2 = new JLabel("Two"); 
        lbl3 = new JLabel("Three"); 
        four = new JButton("Four"); 
        five = new JButton("Five"); 
        six = new JButton("Six"); 
        gridLayoutPanel2.setLayout(new GridLayout(1, 3, 5, 5)); // GridLayout Manager সেট করুন 
        gridLayoutPanel2.add(lbl1); 
        gridLayoutPanel2.add(lbl2); 
        gridLayoutPanel2.add(lbl3); 
        gridLayoutPanel3.setLayout(new GridLayout(3, 1, 5, 5)); // GridLayout Manager সেট করুন 
        gridLayoutPanel3.add(four); 
        gridLayoutPanel3.add(five); 
        gridLayoutPanel3.add(six); 
        gridLayoutPanel1.setLayout(new GridLayout(2, 1)); // GridLayout Manager সেট করুন 
        gridLayoutPanel1.add(gridLayoutPanel2); 
        gridLayoutPanel1.add(gridLayoutPanel3); 
        add(flowLayoutPanel1, BorderLayout.NORTH); 
        add(flowLayoutPanel2, BorderLayout.SOUTH); 
        add(gridLayoutPanel1, BorderLayout.CENTER); 
        setSize(400, 325); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setLocationRelativeTo(null); 
        setVisible(true); 
    } 
    
    public static void main(String args[]) { 
        new LayoutManagerTest(); 
    } 
}

আউটপুট

জাভাতে LayoutManager কী এবং LayoutManager-এর প্রকারগুলো কী?

  1. ইভেন্ট হ্যান্ডলিং কী এবং জাভাতে ইভেন্ট হ্যান্ডলিং-এর কম্পোনেন্টগুলি বর্ণনা করুন।

  2. ফার্মওয়্যার কী? সংজ্ঞা এবং প্রকারভেদ

  3. জাভা এবং জাভাস্ক্রিপ্টের মধ্যে পার্থক্য কী?

  4. OLED স্ক্রিন কী? ধরন, সুবিধা এবং LCD, LED, CRT ডিসপ্লে চেয়ে কীভাবে উন্নত