AWT (Abstract Window Toolkit)-এ Custom Layout Manager তৈরি করার জন্য আপনাকে LayoutManager ইন্টারফেস বা LayoutManager2 ইন্টারফেস ইমপ্লিমেন্ট করতে হবে। একটি কাস্টম লেআউট ম্যানেজার তৈরি করলে আপনি নিজের পছন্দমতো উপাদানগুলোর অবস্থান এবং আকার নির্ধারণ করতে পারবেন, যা আপনাকে আরও বেশি কাস্টমাইজেশন এবং নিয়ন্ত্রণ প্রদান করবে।
নিচে একটি সাধারণ কাস্টম লেআউট ম্যানেজার তৈরি করার উদাহরণ দেওয়া হলো:
কাস্টম লেআউট ম্যানেজার তৈরি করার ধাপ:
- LayoutManager ইন্টারফেস ইমপ্লিমেন্ট করুন:
LayoutManagerইন্টারফেসটি তিনটি প্রধান মেথডের মধ্যে কাজ করে:addLayoutComponent(),removeLayoutComponent(), এবংlayoutContainer().- কাস্টম লেআউট ম্যানেজারের জন্য, সাধারণত
layoutContainer()মেথডে উপাদানগুলোর অবস্থান ও আকার নির্ধারণ করা হয়।
- কাস্টম লেআউট ম্যানেজারের ক্লাস তৈরি করুন:
- নতুন Java ক্লাস তৈরি করুন এবং
LayoutManagerইন্টারফেস ইমপ্লিমেন্ট করুন।
- নতুন Java ক্লাস তৈরি করুন এবং
উদাহরণ: একটি কাস্টম Grid Layout
এখানে একটি কাস্টম লেআউট ম্যানেজার তৈরি করা হয়েছে, যা উপাদানগুলিকে একটি গ্রিডে সজ্জিত করবে।
import java.awt.*;
import java.util.*;
public class CustomGridLayout implements LayoutManager {
private int rows;
private int cols;
// Constructor to define rows and columns
public CustomGridLayout(int rows, int cols) {
this.rows = rows;
this.cols = cols;
}
// Add a component to the layout (not used in our custom layout)
@Override
public void addLayoutComponent(String name, Component comp) {
// No need to implement this for our simple layout
}
// Remove a component from the layout
@Override
public void removeLayoutComponent(Component comp) {
// No need to implement this for our simple layout
}
// Define how the components should be arranged in the container
@Override
public void layoutContainer(Container parent) {
int totalComponents = parent.getComponentCount();
int x = 0, y = 0;
for (int i = 0; i < totalComponents; i++) {
Component comp = parent.getComponent(i);
int width = parent.getWidth() / cols;
int height = parent.getHeight() / rows;
comp.setBounds(x * width, y * height, width, height);
x++;
if (x == cols) {
x = 0;
y++;
}
}
}
// Return the preferred layout size (not used in our custom layout)
@Override
public Dimension preferredLayoutSize(Container parent) {
return new Dimension(400, 400); // Example preferred size
}
// Return the minimum layout size (not used in our custom layout)
@Override
public Dimension minimumLayoutSize(Container parent) {
return new Dimension(200, 200); // Example minimum size
}
}
কাস্টম লেআউট ম্যানেজার ব্যবহার করা:
এখন এই কাস্টম লেআউট ম্যানেজারকে একটি ফ্রেমে ব্যবহার করে দেখুন:
import java.awt.*;
public class CustomLayoutExample {
public static void main(String[] args) {
Frame frame = new Frame("Custom Grid Layout");
// Set the custom layout manager
frame.setLayout(new CustomGridLayout(2, 2));
// Add some components to the frame
frame.add(new Button("Button 1"));
frame.add(new Button("Button 2"));
frame.add(new Button("Button 3"));
frame.add(new Button("Button 4"));
// Frame settings
frame.setSize(400, 400);
frame.setVisible(true);
// Close the window properly
frame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent we) {
System.exit(0);
}
});
}
}
কোডের ব্যাখ্যা:
- CustomGridLayout ক্লাস: এটি কাস্টম লেআউট ম্যানেজার, যা
LayoutManagerইন্টারফেস ইমপ্লিমেন্ট করে। এই ক্লাসে আমরা দুটি প্রপার্টিrowsএবংcolsব্যবহার করছি যা গ্রিডের সারি এবং কলামের সংখ্যা নির্ধারণ করে। - layoutContainer() মেথড: এখানে আমরা
Component.setBounds()ব্যবহার করে উপাদানগুলির অবস্থান এবং আকার নির্ধারণ করছি। আমরা গ্রিডের মতো উপাদানগুলিকে সাজানোর জন্য একটি সোজা পদ্ধতি অনুসরণ করেছি। - Frame তৈরি করা:
CustomGridLayoutলেআউট ব্যবহার করে, আমরা কিছু বোতাম যুক্ত করেছি এবং তাদের গ্রিডে সজ্জিত করেছি।
কাস্টম লেআউটের উন্নতি:
- ডাইনামিক সাইজিং: আপনি উপাদানগুলির আকার ডাইনামিকভাবে পরিবর্তন করতে পারেন।
- অবস্থান নিয়ন্ত্রণ: আরও জটিল উপাদান সজ্জা বা কাস্টম প্যাডিং, মার্জিন যোগ করতে পারেন।
- স্টাইলিং: বিভিন্ন ধরনের কাস্টম শৈলী যেমন গ্রিডের মাঝে সীমা বা বর্ডার যোগ করতে পারেন।
এভাবে AWT তে কাস্টম লেআউট ম্যানেজার তৈরি করে আপনার GUI অ্যাপ্লিকেশনটির সজ্জা সম্পূর্ণ কাস্টমাইজ করতে পারেন।
Read more