Layout Manager in Java

Layout Manager in Java: Layout Manages एक विशेष प्रकार के Objects होते हैं जो ये तय करते हैं कि Application या Applet के Window में विभिन्न प्रकार के Components किस प्रकार से Organize होंगे। जब हम किसी Applet या Application को Create करते हैं, तब जावा Automatically एक Default Layout Manager Create करता है और हमारे Applet या Application को वह Default Layout Manager Object Assign कर देता है। सामान्‍यतया ये Default Layout Manager Flow Layout Object होता है।

हमने इसी अध्‍याय में देखा है कि कुल पांच तरह के Containers होते हैं, जिनमें से Panel भी एक प्रकार का Container है। लेकिन ये एक ऐसा Container है, जो Visually Display नहीं होता है। इसलिए इस Container का प्रयोग सामान्‍यतया विभिन्न प्रकार के Controls के Group को अन्‍य Visually Display होने वाले Containers पर Organize (Localize and Sized) करने के लिए किया जाता है।

जब हम विभिन्न Components को Applet या किसी अन्‍य Container पर Place करते हैं, तब जिस तरीके से ये विभिन्न Controls Screen पर या Applet पर Organize होते हैं, उनके Organize होने का तरीका बहुत ही Variable होता है। Applet या Application पर दिखाई देने वाले विभिन्न प्रकार के Components निम्न स्थितियों से प्रभावित होते हैं:

  • Applet Window की Size से
  • अन्‍य Components व Containers की Size से
  • Use किए जाने वाले Layout Manager से

Flow Layout Manager in Java

जावा में जितने भी Container Controls होते हैं, उन सभी के साथ एक Layout Manager Associated होता है। Layout Manager Layout Class का एक Object होता है, जिसमें LayoutManager Interface को Implement किया गया होता है। किसी Layout को Set करने के लिए हमें setLayout()  Method को Use करना होता है। यदि हम किसी Container के साथ किसी Layout को Set नहीं करते हैं, तो उस Container के साथ एक Default Layout Manager Set हो जाता है, जिसका नाम FlowLayout होता है।

हम जब भी किसी Container Object को Resize करते हैं, Container से Associated LayoutManager उस Container के सभी Objects को Relatively Resize करके Container में फिर से Set कर देता है। जावा में Multiplatform पर Use किए जाने वाले GUI Applications या Applets बनाए जाते हैं। जबकि विभिन्न प्रकार के Platforms पर GUI समान दिखाई नहीं देते हैं।

जावा में Layout Manager s का प्रयोग इसीलिए किया गया है, ताकि हम जावा के Programs को किसी भी Platform पर Execute करें, वे सभी Platform पर समान दिखाई दें। जब हम किसी Container के लिए किसी Layout को Manually Set करना चाहते हैं, तो हमें निम्नानुसार Statement Use करना होता है:

      void setLayout(LayoutManager layoutObj)

इस Statement में layoutObj उस Layout Object का Reference है, जिसे हम Container के लिए Set करना चाहते हैं। यदि हम किसी Container के लिए किसी Layout को Use करना नहीं चाहते] बल्कि हम Controls को उनकी Actual Position पर Place करना चाहते हैं, तो हमें layoutObj Argument में null Specify करना होता है।

लेकिन यदि हम किसी Container के लिए Layout को null कर देते हैं, तो Container में Place होने वाले सभी Components की Size व Position को हमें ही Specify करना जरूरी हो जाता है, अन्‍यथा हमें Container में कोई भी Component दिखाई नहीं देता है। विभिन्न Components की Size तय करने के लिए हमें setBounds() Method को Use करना पडता है, साथ ही विभिन्न Components को Container के लिए Visible भी बनाना पडता है।

हम जिस किसी भी Layout Manager  को Use करते हैं, वह Layout Manager उस Components के नाम का Record या Track रखता है और हम जैसे ही किसी Container में किसी Component को Add करते हैं, वह Layout Manager Notify हो जाता है। जब भी हम उस Container को Resize करते हैं, Layout Manager minimumLayoutSize() व preferredLayoutSize() Method को Use करके Container के सभी Components की Size को अनुपात में कम कर देता है। जो भी Component किसी Layout Manager द्वारा Manage हो रहा होता है यानी जो भी Component किसी Container में Add किया जाता है, उस Component में getPreferredSize() व getMinimumSize() नाम का Method होता है।

ये दोनों Methods किसी Component द्वारा Display होने वाली Preferred व Minimum Size को Return करते हैं। जहां तक सम्भव होता है, Layout Manager सभी Objects को अपने नियमों के अनुसार Manage करता है। जावा में विभिन्न प्रकार के Layout Manager हैं, जिनका प्रयोग करके हम हमारी जरूरत को पूरा कर सकते हैं। साथ ही हम हमारी जरूरत के अनुसार नया Layout Manager भी Define कर सकते हैं।

FlowLayout Manager

जावा में कई तरह के Layout Managers हैं, जिनका प्रयोग करके Applet पर Place होने वाले विभिन्न Controls की Location व Size में Required परिवर्तन किया जा सकता है। FlowLayout Class Applet का Default Layout Manager होता है, जिसका प्रयोग Automatically अभी तक के सभी Applet Programs के Applets में हुआ है। FlowLayout में विभिन्न Components उसी तरह से Applet पर Place होते चले जाते हैं, जिस तरह से किसी Page पर विभिन्न शब्द Print होते चले जाते हैं। जैसे ही Page की Line पूरी होती है, बाकी के शब्द अगली Line में Print होने लगते हैं।

ठीक इसी तरह से जैसे ही Applet में जगह भर जाती है, विभिन्न Controls अगली Line में Place होने लगते हैं। Applet के विभिन्न Components को FlowLayout में Setup करने के लिए हमें FlowLayout Class का एक Object Create करके इसे एक Argument के रूप में setLayout() Method में Pass किया जाता है। यानी इस Layout को यदि हम Manually Set करना चाहें, तो हमें निम्नानुसार Statement लिखने होते हैं:

FlowLayout myLayout = new FlowLayout();
setLayout(myLayout);

FlowLayout Class किसी Applet के लिए एक Default Layout Manager होता है। Flow Layout Manager विभिन्न Controls को Applet पर उसी Sequence में एक Horizontal Row में Place करता है, जिस Sequence में वे init() Method में add() Method का प्रयोग करके Add किए जाते हैं।

जैसे ही ये Manager Applet के Right Border तक पहुंचता है, ये बाकी के Controls को अगले Horizontal Row में Place करना शुरू कर देता है। ये Layout अपनी Default स्थिति में विभिन्न Controls को Applet के Center में Place करता है। FlowLayout Class के तीन Constructors हैं जो कि निम्नानुसार हैं:

public FlowLayout();                                                          // No-Argument Constructor
public FlowLayout(int align);                                           // 1-Argument Constructor
public FlowLayout(int align, int hgap, int vgap);         //3-Argument Constructor

No-Argument Constructor एक नया FlowLayout Manager Object Create करता है और Applet पर Place किए जाने वाले सभी Controls को Applet के Center में Place करता है। साथ ही सभी Controls आपस में By-Default Vertically व Horizontally 5-5 Pixels दूर Place होते हैं।

1-Argument Constructor द्वारा Create होने वाला Layout Manager Object उस दिशा से Controls को Applet पर Place करना शुरू करता है, जिस दिशा का हम 1-Argumnet Constructor में उल्लेख कर देते हैं। जबकि इस Constructor का प्रयोग करने पर भी विभिन्न Controls Default रूप से Horizontally व Vertically 5-5 Pixels दूर Place होते हैं।

3-Argument Constructor द्वारा हम ऐसा Layout Object Create कर सकते हैं, जिसे Set करके हम ये तय कर सकते हैं, कि Controls किस दिशा से Form पर Place] होंगे और विभिन्न Controls के बीच Horizontally व Vertically कितना Gap रहेगा।

align

इस Argument के स्थान पर हमें निम्न में से किसी एक Constant को Use करना होता है:

FlowLayout.LEFT       –       जब Controls को Left से Place करना हो
FlowLayout.RIGHT     –       जब Controls को Right से Place करना हो
FlowLayout.CENTER –       जब Controls को Center में Place करना हो

hgap, vgap

इन Arguments के स्थान पर हम उन Pixels की संख्‍या को Specify करते हैं, जितने Pixels की दूरी हमें Horizontally व Vertically दो Controls के बीच रखनी होती है। उदाहरण के लिए यदि हमें Applet पर विभिन्न Controls को Left से Place करना हो साथ ही सभी Controls के बीच की दूरी को 10 Pixel Horizontally व 5 Pixels Vertically रखना हो, तो निम्न Applet में हम ये काम निम्नानुसार कर सकते हैं:

	// File Name: ButtonNTextBoxApplet.java
	import java.awt.*;
	import java.applet.*;
	
	public class ButtonNTextBoxApplet extends Applet{
	TextField txtBox1 = new TextField(10), txtBox2 = new TextField(10);
	Button OKButton = new Button("OK");
	FlowLayout organizeControls = new FlowLayout(FlowLayout.LEFT, 10, 5);
	
		public void init(){
			setLayout(organizeControls);
			add(txtBox1);
			add(txtBox2);
			add(OKButton);
		}
	}
Layout Manager in Java Progamming Language in Hindi

FlowLayout Manager का प्रयोग हम किसी Specific Container जैसे कि Panel Object के लिए भी कर सकते हैं। ये काम हम setLayout() Method का प्रयोग करके कर सकते हैं। यानी हम किसी भी Layout को setLayout() Method का प्रयोग करके किसी भी Container से Associate कर सकते हैं। यदि हमें किसी Layout को किसी Panel Object से Associate करना हो, तो हम ये काम निम्नानुसार Statement द्वारा कर सकते हैं:

Panel inputArea = new Panel();
FlowLayout inputLayout = new FlowLayout();
inputArea.setLayout(inputLayout);

इन Statements का मतलब ये है कि हम जो भी Controls add() Method का प्रयोग करके Add करेंगे, वे सभी Controls FlowLayout Manager के inputLayout Object से Associate हो जाएंगे और इस FlowLayout Manager Object को हम setLayout() Method का प्रयोग करके Panel Object inputArea से Associate कर देंगे। जिससे inputLayout नाम के Object में Associated सभी Controls inputArea नाम के Panel Object से Associate हो जाएंगे।

केवल FlowLayout Manager का प्रयोग करके हम किसी Applet पर स्थित विभिन्न Controls को ठीक से Organized नहीं कर सकते हैं। विभिन्न Controls को Applet पर ठीक से Organize करने के लिए हमें कम से कम एक और Layout Manager की जरूरत होती है। इस Layout के अलावा भी जावा में कुछ और उपयोगी Layout Manager s हैं।

BorderLayout Manager

ये Layout Top-Level Windows के लिए एक Common Layout Implement करता है। इस Layout में Window के चारों तरफ चार Fixed Width Components होते हैं, जबकि इसके Center में एक बडा Area होता है। Window के चारों Sides को North, South, EastWest नाम से तथा मध्‍य भाग को Center नाम से Identify किया जाता है। BorderLayout Manager  में Define किए जाने वाले Constructors निम्नानुसार है:

BorderLayout()
BorderLayout(int hori, int vert)

पहला Constructor एक Default Border Layout Create करता है, जबकि दूसरा Constructor Container के HorizontalVertical Controls के बीच छोडे जाने वाले Space को Define करने की सुविधा प्रदान करता है। इस Layout में हम निम्न Constant मानों का प्रयोग करके Container की Regions को Specify कर सकते हैं:

BorderLayout.CENTER
BorderLayout.SOUTH
BorderLayout.EAST
BorderLayout.WEST
BorderLayout.NORTH

जब हम Components को Container में Add करते हैं, तब हमें इन Components को Container में Add करने के लिए निम्नानुसार Syntax का प्रयोग करना होता है:

      void add(Component compObj, Object regions)

यहां compObj वह Object है जिसे Container में Add किया जाना है और regions वह स्थान Specify करता है, जहां Component Add किया जाने वाला है।

GridLayout Manager

GridLayout Class किसी Container के सभी Components को एक Specific Rows व Columns में Organize करता है। यानी इस Layout का सबसे सरल नियम ये है कि Applet या Container के Display होने वाले Area को Programmer अपनी आवश्‍यकतानुसार Rows व Columns की संख्‍या सुनिश्चित करके Rows व Columns में बांट देता है।

User जिस संख्‍या को सुनिश्चित करता है, वह संख्‍या Display होने वाले कुल Rows व Columns की संख्‍या होती है। यानी यदि User Grid की संख्‍या (2, 3) तय करता है, तो Display Area कुल ( 2 * 3 ) 6 भागों (Cells) में विभाजित हो जाता है, और सभी Cells एकदम बराबर होते हैं।

इस Layout में Controls Display Area के First Cell से Place होना शुरू होते हैं और जब Display Area में और Controls के लिए Space नहीं बचता है, तब Controls अगली Line के Left Most Cell से Place होना शुरू होते हैं। इस Layout में हमें निम्न Constructors प्राप्त होते हैं:

GridLayout()
GridLayout(int numRows, int numColumns)
GridLayout(int numRows, int numColumns, int hori, int vert)

तीसरा Constructor हमें Display होने वाले विभिन्न Components के बीच छोडे जाने वाले Vertical व Horizontal Space को Specify करने की सुविधा प्रदान करता है, फिर चाहे numRowsnumColumns का मान 0 ही क्यों ना हो। numRows का मान 0 Specify करने का मतलब होता है कि हम Unlimited-Length Rows Specify कर रहे हैं, जबकि numColumns का मान 0 Specify करने का मतलब होता है, हम Unlimited-Length Column Define कर रहे हैं।

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS