Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

LayoutManager และประเภทของ LayoutManager ใน Java คืออะไร


ผู้จัดการเลย์เอาต์ช่วยให้เราควบคุมวิธีการจัดเรียงองค์ประกอบภาพในแบบฟอร์ม GUI โดยกำหนดขนาดและตำแหน่งของส่วนประกอบภายในคอนเทนเนอร์

ประเภทของ LayoutManager

มีตัวจัดการเลย์เอาต์ 6 ตัวใน Java

  • FlowLayout :จัดเรียงส่วนประกอบในคอนเทนเนอร์เหมือนกับคำในหน้า เติมบรรทัดบนสุดจากซ้ายไปขวาและบนลงล่าง . ส่วนประกอบต่างๆ จะถูกจัดเรียงตามลำดับเมื่อมีการเพิ่มเข้าไป กล่าวคือ ส่วนประกอบแรกจะปรากฏที่ด้านซ้ายบน หากคอนเทนเนอร์ไม่กว้างพอที่จะแสดงส่วนประกอบทั้งหมด ส่วนประกอบจะถูกพันรอบเส้น สามารถควบคุมช่องว่างในแนวตั้งและแนวนอนระหว่างส่วนประกอบได้ ส่วนประกอบสามารถจัดชิดซ้าย กึ่งกลาง หรือทางขวา
  • เค้าโครงเส้นขอบ :จัดเรียงส่วนประกอบทั้งหมดตามขอบหรือตรงกลางของคอนเทนเนอร์ เช่น บน ล่าง ขวา และซ้าย ขอบของพื้นที่ ส่วนประกอบที่เพิ่มที่ด้านบนหรือด้านล่างจะได้รับความสูงที่ต้องการ แต่ความกว้างจะเป็นความกว้างของคอนเทนเนอร์ และส่วนประกอบที่เพิ่มทางด้านซ้ายหรือด้านขวาจะได้รับความกว้างที่ต้องการ แต่ความสูงจะเป็นความสูงที่เหลือของคอนเทนเนอร์ ส่วนประกอบที่เพิ่มเข้ามาตรงกลางนั้นไม่ได้ทั้งความสูงหรือความกว้างที่ต้องการ ครอบคลุมพื้นที่ที่เหลือของคอนเทนเนอร์
  • เค้าโครงตาราง :จัดเรียงส่วนประกอบทั้งหมดในตารางของ เซลล์ที่มีขนาดเท่ากัน โดยเพิ่มจาก ซ้ายไปขวา t และ บนลงล่าง . วางองค์ประกอบได้เพียงองค์ประกอบเดียวในเซลล์ และแต่ละขอบเขตของกริดจะมีขนาดเท่ากัน เมื่อปรับขนาดคอนเทนเนอร์แล้ว เซลล์ทั้งหมดจะถูกปรับขนาดโดยอัตโนมัติ ลำดับการวางส่วนประกอบในเซลล์จะถูกกำหนดเมื่อเพิ่มเข้าไป
  • GridBagLayout :เป็นเลย์เอาต์ที่ทรงพลังซึ่งจัดเรียงส่วนประกอบทั้งหมดในตารางเซลล์ และรักษาสัดส่วนของออบเจกต์ทุกครั้งที่ปรับขนาดคอนเทนเนอร์ ในโครงร่างนี้ เซลล์อาจมีขนาดต่างกัน โดยกำหนดช่องว่างแนวนอนและแนวตั้งที่สอดคล้องกันระหว่างส่วนประกอบต่างๆ ช่วยให้เราสามารถระบุการจัดตำแหน่งเริ่มต้นสำหรับส่วนประกอบภายในคอลัมน์หรือแถวได้
  • BoxLayout :จัดเรียงองค์ประกอบหลายส่วนใน แนวตั้งหรือแนวนอน แต่ไม่ใช่ทั้งสองอย่าง ส่วนประกอบถูกจัดเรียงจากซ้ายไปขวาหรือบนลงล่าง . หากส่วนประกอบอยู่ในแนว ในแนวนอน , ความสูงของส่วนประกอบทั้งหมดจะเท่ากันและเท่ากับส่วนประกอบที่มีขนาดใหญ่ที่สุด หากองค์ประกอบอยู่ในแนว แนวตั้ง ความกว้างของส่วนประกอบทั้งหมดจะเท่ากันและเท่ากับความกว้างของส่วนประกอบที่ใหญ่ที่สุด
  • เลย์เอาต์การ์ด :จัดเรียงส่วนประกอบตั้งแต่สองชิ้นขึ้นไปที่มีขนาดเท่ากัน ส่วนประกอบจัดเป็นสำรับ โดยที่การ์ดทุกใบที่มีขนาดเท่ากันและเฉพาะการ์ดใบบนสุดจะมองเห็นได้ตลอดเวลา . ส่วนประกอบแรกที่เพิ่มลงในคอนเทนเนอร์จะถูกเก็บไว้ที่ด้านบนสุดของเด็ค ช่องว่างเริ่มต้นที่ขอบซ้าย ขวา บน และล่างเป็นศูนย์ และส่วนประกอบของการ์ดจะแสดงในแนวนอนหรือแนวตั้ง

ตัวอย่าง

<ก่อนหน้า>นำเข้า java.awt.*;นำเข้า javax.swing.*; LayoutManagerTest คลาสสาธารณะขยาย JFrame { JPanel flowLayoutPanel1, flowLayoutPanel2, gridLayoutPanel1, gridLayoutPanel2, gridLayoutPanel3; Jปุ่ม หนึ่ง สอง สาม สี่ ห้า หก; ด้านล่าง JLabel, lbl1, lbl2, lbl3; LayoutManagerTest สาธารณะ () { setTitle ("การทดสอบ LayoutManager"); setLayout(ใหม่ BorderLayout()); // ตั้งค่า BorderLayout สำหรับ JFrame flowLayoutPanel1 =JPanel ใหม่ (); หนึ่ง =ใหม่ JButton ("หนึ่ง"); สอง =ใหม่ JButton ("สอง"); สาม =ใหม่ JButton("สาม"); flowLayoutPanel1.setLayout (โฟลว์เลย์เอาต์ใหม่ (FlowLayout.CENTER)); // ตั้งค่า FlowLayout Manager flowLayoutPanel1.add(หนึ่ง); flowLayoutPanel1.add(สอง); flowLayoutPanel1.add(สาม); flowLayoutPanel2 =JPanel ใหม่ (); bottom =new JLabel("นี่คือทางใต้"); flowLayoutPanel2.setLayout (โฟลว์เลย์เอาต์ใหม่ (FlowLayout.CENTER)); // ตั้งค่า FlowLayout Manager flowLayoutPanel2.add(ด้านล่าง); gridLayoutPanel1 =JPanel ใหม่ (); gridLayoutPanel2 =JPanel ใหม่ (); gridLayoutPanel3 =JPanel ใหม่ (); lbl1 =ใหม่ JLabel("หนึ่ง"); lbl2 =ใหม่ JLabel("สอง"); lbl3 =ใหม่ JLabel("สาม"); สี่ =ใหม่ JButton ("สี่"); ห้า =ใหม่ JButton ("ห้า"); หก =ใหม่ JButton ("หก"); gridLayoutPanel2.setLayout ( GridLayout ใหม่ (1, 3, 5, 5)); // ตั้งค่าตัวจัดการ GridLayout gridLayoutPanel2.add(lbl1); gridLayoutPanel2.add(lbl2); gridLayoutPanel2.add(lbl3); gridLayoutPanel3.setLayout(ใหม่ GridLayout(3, 1, 5, 5)); // ตั้งค่าตัวจัดการ GridLayout gridLayoutPanel3.add(สี่); gridLayoutPanel3.add(ห้า); gridLayoutPanel3.add(หก); gridLayoutPanel1.setLayout(ใหม่ GridLayout(2, 1)); // ตั้งค่าตัวจัดการ GridLayout gridLayoutPanel1.add(gridLayoutPanel2); gridLayoutPanel1.add (gridLayoutPanel3); เพิ่ม (flowLayoutPanel1, BorderLayout.NORTH); เพิ่ม (flowLayoutPanel2, BorderLayout.SOUTH); เพิ่ม (gridLayoutPanel1, BorderLayout.CENTER); ขนาดชุด (400, 325); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(จริง); } โมฆะคงที่สาธารณะ main (String args []) { new LayoutManagerTest (); }}

ผลลัพธ์

LayoutManager และประเภทของ LayoutManager ใน Java คืออะไร