BorderLayout

BorderLayout مدیر لایه پیشفرض contentPan کلاس‌های JFrame ،JWindow ،JDialog ،JInternalFrame و JApplet بوده و دارای پنج منطقه چپ، راست، بالا، پایین و مرکز می‌باشد. یعنی کنترل‌ها را می‌توان در این پنج منطقه قرار داد. بسته به اندازه ویندوز این پنج منطقه تغییر اندزاه می‌دهند و کل صفحه را پوشش می‌دهند. اگر یک کنترل به Frame اضافه کرده و منطقه آن را مشخص نکنید به طور پیشفرض در وسط فریم قرار می‌گیرد و اگر چندین کنترل را به یک منطقه اضافه کنید آخرین کنترل اضافه شده نمایش داده می‌شود. کلاس BorderLayout دارای دو سازنده زیر می‌باشد :

public BorderLayout()

public BorderLayout(int hgap, int vgap)

مناطقی که می‌توان هنگام اضافه کردن کنترل به Container مشخص کرد، عبارتند از :

  • CENTER
  • EAST
  • NORTH
  • SOUTH
  • WEST

برای آشنایی بیشتر با عملکرد این کلاس به کد زیر توجه کنید :

   1: import java.awt.*;
   2: import javax.swing.*;
   3: 
   4: public class FrameDemo 
   5: {
   6:     public static void main(String[] args) 
   7:     {
   8:         JFrame frame1 = new JFrame("BorderLayout Demo"); 
   9:         frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10:         
  11:         frame1.setLayout(new BorderLayout());
  12:         frame1.setFont(new Font("Helvetica", Font.PLAIN, 14));	
  13:         frame1.add(new JButton("North"),    BorderLayout.NORTH);
  14:         frame1.add(new JButton("South"),    BorderLayout.SOUTH);
  15:         frame1.add(new JButton("East"),     BorderLayout.EAST);
  16:         frame1.add(new JButton("West"),     BorderLayout.WEST);
  17:         frame1.add(new JButton("Center"),   BorderLayout.CENTER);
  18:         
  19:         frame1.setSize(430 ,315);
  20:         frame1.setVisible(true);
  21:     }   
  22: }

نتیجه اجرای کد بالا به صورت زیر است :
border-layout-01
برای ایجاد فاصله بین این قسمت‌ها هم در قسمت سازنده مقادیری از نوع عدد صحیح می‌نویسید.vgap فاصله عمودی و hgap فاصله افقی از دیگر کنترل‌ها می‌باشد. مثلاً خط 8 کد بالا را به صورت زیر تغییر دهید :

setLayout(new BorderLayout(5,8));

بعد از اجرای دوباره برنامه فاصله‌هایی که تعیین کرده‌اید در بین قسمت‌ها قابل مشاهده است :
border-layout-02
اگر بخواهید چند کنترل را در یک ناحیه قرار دهید، ابتدا باید آنها را به یک Container اضافه کرده و ناحیه آنها را در آن مشخص کنید و سپس Container را به مثلاً Frame اضافه کرده و ناحیه آن را مشخص کنید. فرض کنید که می‌خواهیم یک Label و یک textfield را در ناحیه بالای فریم اضافه کنیم. ابتدا باید آنها را به یک Panel اضافه کرده و سپس Panel را به Frame اضافه کنیم. به کد زیر توجه کنید :

   1: import java.awt.*;
   2: import javax.swing.*;
   3: 
   4: public class FrameDemo 
   5: {
   6:     public static void main(String[] args) 
   7:     {
   8:         JFrame frame1 = new JFrame("BorderLayout Demo"); 
   9:         frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
  10:         frame1.setLayout(new BorderLayout());
  11:         frame1.setFont(new Font("Helvetica", Font.PLAIN, 14));
  12:         
  13:         JPanel topPanel   = new JPanel(new BorderLayout());
  14:         JLabel label = new JLabel("Name: ");
  15:         JTextField text = new JTextField();
  16:         topPanel.add(label,  BorderLayout.WEST);
  17:         topPanel.add(text,   BorderLayout.CENTER);
  18:         frame1.add(topPanel, BorderLayout.NORTH);
  19:                
  20:         frame1.setSize(430 ,315);
  21:         frame1.setVisible(true);
  22:     }   
  23: }

همانطور که در کد بالا مشاهده می‌کنید ابتدا در خط 13 یک Panel ایجاد کرده و مدیر لایه آن را BorderLayout قرار می‌دهیم. سپس در خطوط 14 و 15 یک Label و یک TextField ایجاد کرده و آنها را در خط 16 و 17 در قسمت چپ و وسط Panel قرار می‌دهیم. سپس Panel را در خط 18 به قسمت بالای Frame اضافه کرده‌ایم. خروجی کد بالا به صورت زیر است :
border-layout-03