Layout manager

 

গূঈ(GUI) প্রোগ্রাম ডিজাইনের জন্য একটি অন্যতম বিষয় হল এর কম্পনেন্ট গুলোকে নির্দিষ্ট আকার বা বিভিন্ন আকার ও গঠন বলে দেওয়া । তবে অনেক সময় অনেকগুলো কম্পনেন্টের জন্য একই সাইজ দরকার হয় আর এ কারনে লেয়াউট ম্যানেজারের মাধ্যমে তা একই সাথে করা হয় – জাভাতে মুলত ৬ ধরনের লেয়াঊট রয়েছে যার প্রত্যকটি আলাদা আলাদা কাজা / লেয়াঊট দিয়ে থাকে –
1.Flow Layout Manager
2. Border Layout Manager
3. Grid Layout Manager
4. Grid Bag Layout Manager
5.Card Layout Manager
6.Box Layout Manager

এগুলোর মধ্যে Flow Layout manager ডিফল্ট ম্যানেজার হিসেবে কাজ করে থাকে।

Layout manager Description
FlowLayout Default for javax.swing.JPanel. Places components sequentially (left
to right) in the order they were added. It’s also possible to specify the
order of the components by using the Container method add,which
takes a Component and an integer index position as arguments.
BorderLayout Default for JFrames (and other windows). Arranges the components
into five areas: NORTH, SOUTH, EAST , WEST and CENTER.
GridLayout Arranges the components into rows and columns.

BoxLayout A layout manager that allows GUI components to be arranged left-to-
right or top-to-bottom in a container. Class Box declares a container
with BoxLayout as its default layout manager and provides static
methods to create a Box with a horizontal or vertical BoxLayout.
GridBagLayout A layout manager similar to GridLayout, but the components can
vary in size and can be added in any order.
Card layout support all the manager to use in same Layout.

 

Advertisements

লেবেল(Label)

উইডোতে লেবেল প্রদর্শনের জন্য সাধারন্ভাবে লেবেল ব্যাবহার করা হয়-
লেবেল ব্যাবহার করার জন্য সাধারনত তিনটি ফরমেট ব্যাবহার করা হয়ঃ
1. Label()
2. Label(String Text)
3.Label (String Text, int AllignValue)
AllignValue গুলো হলো যথাক্রমে Label.LEFT, Label.RIGHT, Label.CENTER
লেবেল বিশিষ্ট একটি প্রোগ্রাম নিচে দেওয়া হল-
import java.awt.FlowLayout;
import java.awt.Label;

import javax.swing.JFrame;

public class c3 extends JFrame{

c3(){
setLayout(new FlowLayout());
Label lb=new Label(“NSTU”);
Label lb1=new Label(“CSTE”);
Label lbl2=new Label(“Arif Hasnat”);
add(lb);
add(lb1);
add(lbl2);

}
public static void main(String arg[]){

c3 c=new c3();
c.setSize(400, 400);
c.setVisible(true);
c.setDefaultCloseOperation(EXIT_ON_CLOSE);

}
Label
}

গ্রীড লেয়াঊট

GridLayout Arranges the components into rows and columns.
গ্রীড লেয়াঊট ম্যানেজার container কে গ্রীড এ ভাগ করে থাকে তার ফলে কম্পনেন্ট রো ও কলাম এ বিভক্ত হয়।প্রতিটি row and column এর একই width ও height থাকে। row এবং column গুলো বাম পার্শের উপড় থেকে ডান পার্শে বিস্তৃত হতে থাকে । এবং এভাবে চলতে থাকে শেষ পর্যন্ত।

একটি প্রোগ্রামের মাধ্যমে দেখা যাক-
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;

public class GridLayoutFrame extends JFrame implements ActionListener
{
private JButton[] buttons;   private static final String[] names =
{ “one”, “two”, “three”, “four”, “five”, “six” };
private boolean toggle = true;
private Container container;
private GridLayout gridLayout1;
private GridLayout gridLayout2;
public GridLayoutFrame()
{
super( “GridLayout Demo” );
gridLayout1 = new GridLayout( 2, 3, 5, 5 );
gridLayout2 = new GridLayout( 3, 2 );
container = getContentPane();
setLayout( gridLayout1 );
buttons = new JButton[ names.length ];
for ( int count = 0; count < names.length; count++ )
{
buttons[ count ] = new JButton( names[ count ] );
buttons[ count ].addActionListener( this );
add( buttons[ count ] );
}
}
public void actionPerformed( ActionEvent event )
{
if ( toggle )
container.setLayout( gridLayout2 );
else
container.setLayout( gridLayout1 );

toggle = !toggle;
container.validate();
}
}

import javax.swing.JFrame;

public class GridLayoutDemo
{
public static void main( String[] args )
{
GridLayoutFrame gridLayoutFrame = new GridLayoutFrame();
gridLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
gridLayoutFrame.setSize( 300, 200 );
gridLayoutFrame.setVisible( true );
}
}

কোডের ব্যাক্ষা———–

import java.awt.GridLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;

public class GridLayoutFrame extends JFrame implements ActionListener
{
private JButton[] buttons; // array of buttons
private static final String[] names =
{ “one”, “two”, “three”, “four”, “five”, “six” };
private boolean toggle = true; // toggle between two layouts
private Container container; // frame container
private GridLayout gridLayout1; // first gridlayout
private GridLayout gridLayout2; // second gridlayout

// no-argument constructor
public GridLayoutFrame()
{
super( “GridLayout Demo” );
gridLayout1 = new GridLayout( 2, 3, 5, 5 ); // 2 by 3; gaps of 5
gridLayout2 = new GridLayout( 3, 2 ); // 3 by 2; no gaps
container = getContentPane(); // get content pane
setLayout( gridLayout1 ); // set JFrame layout
buttons = new JButton[ names.length ]; // create array of JButtons

for ( int count = 0; count < names.length; count++ )
{
buttons[ count ] = new JButton( names[ count ] );
buttons[ count ].addActionListener( this ); // register listener
add( buttons[ count ] ); // add button to JFrame
} // end for
} // end GridLayoutFrame constructor

// handle button events by toggling between layouts
public void actionPerformed( ActionEvent event )
{
if ( toggle )
container.setLayout( gridLayout2 ); // set layout to second
else
container.setLayout( gridLayout1 ); // set layout to first

toggle = !toggle; // set toggle to opposite value
container.validate(); // re-lay out container
} // end method actionPerformed
} // end class GridLayoutFrame

import javax.swing.JFrame;

public class GridLayoutDemo
{
public static void main( String[] args )
{
GridLayoutFrame gridLayoutFrame = new GridLayoutFrame();
gridLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
gridLayoutFrame.setSize( 300, 200 ); // set frame size
gridLayoutFrame.setVisible( true ); // display frame
} // end main
} // end class GridLayoutDemo

ফ্রেম উইন্ডো

ফ্রেম উইন্ড্রো হল স্ট্যান্ডার্ড উইন্ডো যাতে টাইটেল্বার , মেনুবার, বর্ডার থাকে । Frame class এর দুটি method সচারচর ব্যাবহার করা হয়।
Frame()
Frame(String title)

এখানে একটি প্রোগ্রাম দেওয়া হল যার মাধ্যমে বিষয়টা দেখা যাক

import java.awt.Dimension;
import javax.swing.JFrame;

public class c1 extends JFrame{

public static  void main(String arg[]){
JFrame p=new JFrame();//ফ্রেম উইন্ড্রো
p.setSize(new Dimension(400,400));
p.setVisible(true);
p.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

}

Frame Window

ফ্রেম উইন্ড্রো

ফ্রেম উইন্ড্রো হল স্ট্যান্ডার্ড উইন্ডো যাতে টাইটেল্বার , মেনুবার, বর্ডার থাকে । Frame class এর দুটি method সচারচর ব্যাবহার করা হয়।
Frame()
Frame(String title)

এখানে একটি প্রোগ্রাম দেওয়া হল যার মাধ্যমে বিষয়টা দেখা যাক

import java.awt.Dimension;
import javax.swing.JFrame;

public class c1 extends JFrame{

public static  void main(String arg[]){
JFrame p=new JFrame();//ফ্রেম উইন্ড্রো
p.setSize(new Dimension(400,400));
p.setVisible(true);
p.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

}

 

 

ফ্লো-লেয়াঊট

FlowLayout Default for javax.swing.JPanel. Places components sequentially (left
to right) in the order they were added. It’s also possible to specify the
order of the components by using the Container method add,which
takes a Component and an integer index position as arguments.

ফ্লোলেয়াঊট javax.swing.JPanel এর জন্য ডিফল্ট থাকে। আমরা যেমন MS word এ লেখার সময় right ,left ,বা , center alignment এ লেখা ফরমেট করে থাকি সে রকম কাজ করে থাকে । অর্থাত অ্যালাইনমেন্ট কে Flow করে থাকে। যে কোন ভাবে পজিশান চেঞ্জ করা যায়।
এরকম একটি প্রোগ্রাম এখন দেখা যাক——-
eclipse এ নিম্নোক্ত প্রোগ্রামটি রান করালে বিষয়টি বুঝতে পারা যাবে

প্রথমে হেডার ফাইল ইম্পোর্ট করে নিতে হবে । অবশ্য যখন যে হেডার দরকার সেটি ইমপোর্ট করে নিলেই হবে , বরং এটাই ভালো প্রসেস।
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
public class FlowLayoutFrame extends JFrame
{

তিনটি বাটন নেম ভেরিয়েবল নিয়ে নিলাম–
private JButton  leftJButton; // button to set alignment left
private JButton  centerJButton; // button to set alignment center
private JButton  rightJButton; // button to set alignment right

******এখানে ফ্লোলেয়াউট ডিক্লেয়ার করলাম******
private  FlowLayout  layout; // layout object

****লেয়াঊটি একটি কন্টেনারে রাখতে হবে তাই কন্টেনার ভেরিয়েবল ডিক্লেয়ার করলাম***
private  Containe r container; // container to set layout
———-FlowLayoutFrame() নামে একটি ক্লাস নিলাম —–
public  FlowLayoutFrame()
{
*******নাম দিলাম******সুপার এর মাধ্যমে যে নাম দিলাম তা ফ্রেমের header হিসেবে কাজ করবে***
super( “FlowLayout Demo” );

container = getContentPane(); // get container to layout
// set up leftJButton and register listener
leftJButton = new JButton( “Left” ); // create Left button

leftJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process leftJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up centerJButton and register listener
layout = new FlowLayout(); // create FlowLayout
setLayout( layout ); // set frame layout
add( leftJButton ); // add Left button to frame
layout.setAlignment( FlowLayout.LEFT );
layout.layoutContainer( container );
centerJButton = new JButton( “Center” ); // create Center button
add( centerJButton ); // add Center button to frame
centerJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process centerJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up rightJButton and register listener
rightJButton = new JButton( “Right” ); // create Right button

rightJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process rightJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
} // end FlowLayoutFrame constructor } // end class FlowLayoutFrame
layout.setAlignment( FlowLayout.CENTER );
layout.layoutContainer( container );
add( rightJButton ); // add Right button to frame
layout.setAlignment( FlowLayout.RIGHT );
layout.layoutContainer( container );

// Fig. 14.40: FlowLayoutDemo.java
// Testing FlowLayoutFrame.
import javax.swing.JFrame;
public class FlowLayoutDemo
{
public static void main( String[] args )
{
FlowLayoutFrame flowLayoutFrame = new FlowLayoutFrame();
flowLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
flowLayoutFrame.setSize( 300, 75 ); // set frame size
flowLayoutFrame.setVisible( true ); // display frame
} // end main
} // end class FlowLayoutDemo
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
public class FlowLayoutFrame extends JFrame
{

private JButton  leftJButton; // button to set alignment left
private JButton  centerJButton; // button to set alignment center
private JButton  rightJButton; // button to set alignment right
public  FlowLayoutFrame()
private  Containe r container; // container to set layout
private  FlowLayout  layout; // layout object

super( “FlowLayout Demo” );
container = getContentPane(); // get container to layout
// set up leftJButton and register listener
leftJButton = new JButton( “Left” ); // create Left button

leftJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process leftJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up centerJButton and register listener
layout = new FlowLayout(); // create FlowLayout
setLayout( layout ); // set frame layout
add( leftJButton ); // add Left button to frame
layout.setAlignment( FlowLayout.LEFT );
layout.layoutContainer( container );
centerJButton = new JButton( “Center” ); // create Center button
add( centerJButton ); // add Center button to frame
centerJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process centerJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up rightJButton and register listener
rightJButton = new JButton( “Right” ); // create Right button

rightJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process rightJButton event
public void actionPerformed( ActionEvent event )
{

// realign attached components

} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
} // end FlowLayoutFrame constructor } // end class FlowLayoutFrame
layout.setAlignment( FlowLayout.CENTER );
layout.layoutContainer( container );
add( rightJButton ); // add Right button to frame
layout.setAlignment( FlowLayout.RIGHT );
layout.layoutContainer( container );

// Fig. 14.40: FlowLayoutDemo.java
// Testing FlowLayoutFrame.
import javax.swing.JFrame;
public class FlowLayoutDemo
{
public static void main( String[] args )
{
FlowLayoutFrame flowLayoutFrame = new FlowLayoutFrame();
flowLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
flowLayoutFrame.setSize( 300, 75 ); // set frame size
flowLayoutFrame.setVisible( true ); // display frame
} // end main
} // end class FlowLayoutDemo

import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;

public class FlowLayoutFrame extends JFrame
{
private JButton leftJButton; // button to set alignment left
private JButton centerJButton; // button to set alignment center
private JButton rightJButton; // button to set alignment right
private FlowLayout layout; // layout object
private Container container; // container to set layout

// set up GUI and register button listeners
public FlowLayoutFrame()
{
super( “FlowLayout Demo” );

layout = new FlowLayout(); // create FlowLayout
container = getContentPane(); // get container to layout
setLayout( layout ); // set frame layout

// set up leftJButton and register listener
leftJButton = new JButton( “Left” ); // create Left button
add( leftJButton ); // add Left button to frame
leftJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process leftJButton event
public void actionPerformed( ActionEvent event )
{
layout.setAlignment( FlowLayout.LEFT );

// realign attached components
layout.layoutContainer( container );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up centerJButton and register listener
centerJButton = new JButton( “Center” ); // create Center button
add( centerJButton ); // add Center button to frame
centerJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process centerJButton event
public void actionPerformed( ActionEvent event )
{
layout.setAlignment( FlowLayout.CENTER );

// realign attached components
layout.layoutContainer( container );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener

// set up rightJButton and register listener
rightJButton = new JButton( “Right” ); // create Right button
add( rightJButton ); // add Right button to frame
rightJButton.addActionListener(

new ActionListener() // anonymous inner class
{
// process rightJButton event
public void actionPerformed( ActionEvent event )
{
layout.setAlignment( FlowLayout.RIGHT );

// realign attached components
layout.layoutContainer( container );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
} // end FlowLayoutFrame constructor
} // end class FlowLayoutFram

—–**********
import javax.swing.JFrame;

public class FlowLayoutDemo
{
public static void main( String[] args )
{
FlowLayoutFrame flowLayoutFrame = new FlowLayoutFrame();
flowLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
flowLayoutFrame.setSize( 300, 75 ); // set frame size
flowLayoutFrame.setVisible( true ); // display frame
} // end main
} // end class FlowLayoutDemo

flowLayout