کنترل JTabbedPane

کنترل JTabbedPane به شما اجازه می دهد که برای پنجره های خود سربرگ (Tab) بسازید،شما در برنامه های زیادی این نوع پنجره ها را مشاهده کرده اید.برای مثال پنجره ی Properties فایلها.
tabcontrol-02
JTabbedPane می تواند حاوی کنترل های دیگر باشد. با کلیک بر روی هر سربرگ (Tab) می توانید محتویات آنرا مشاهده کنید. ظاهر یک سربرگ فعال با دیگر سربرگ ها متفاوت است ، بنابراین شما می توانید متوجه شوید که کدام یک از سربرگ ها فعال است.زمانی که شما بر روی یک سربرگ کلیک می کنید ، کنترل هایی که به آن تعلق دارند نمایش داده می شوند. JTabbedPane به شما اجازه می دهد که یک فرم را در داخل سربرگهای مختلف سازماندهی کنید ، به طوری که هر سربرگ یک دسته را نمایش دهد. برای مثال،می توانید یک فرم که حاوی اطلاعات شخصی را در سربرگ Personal Info و پیش زمینه ی آموزشی را در سربرگ Educational Background قرار دهید. سازنده این کلاس به روش های زیر مقداردهی می شود :

public JTabbedPane()
public JTabbedPane(int tabPlacement)
public JTabbedPane(int tabPlacement, int tabLayoutPolicy)

برای اضافه کردن یک کنترل TabContorl می توان به صورت زیر عمل نمود :

   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("JTabbedPane Demo");
   9:         JPanel panel1 = new JPanel();
  10:         JPanel panel2 = new JPanel();
  11:              
  12:         JTabbedPane TabbedPane1 = new JTabbedPane();
  13:         TabbedPane1.addTab("Tab1",panel1);
  14:         TabbedPane1.addTab("Tab2",panel2);
  15:           
  16:         frame1.add(TabbedPane1);
  17:         frame1.setSize(355 , 286);
  18:         frame1.setVisible(true);          
  19:     }   
  20: }

همانطور که در خط 12 کد بالا مشاهده می کنید ابتدا یک شی از JTabbedPane ایجاد و سپس در خطوط 13 و 14 دو سربرگ یا تب به آن با استفاده از متد ()addTab اضافه می کنیم. هر تب حداقل باید یک عنوان داشته باشد و یک کنترل دیگر را در خود جای دهد. که ما در هر تب یک کنترل Panel قرار داده ایم :
JTabbedPane-in-java-01

کلاس ImageIcon به شما اجازه می دهد که برای هر tab آیکونی را مشخص کنید. ابتدا دو عکس زیر را در درایو D ذخیره کنید :
img1img2

سپس خطوط 12 تا 14 کد بالا را با کدهای زیر جایگزین کنید :

JTabbedPane TabbedPane1 = new JTabbedPane();
ImageIcon Icon1 = new ImageIcon("D:\\img1.jpg");
ImageIcon Icon2 = new ImageIcon("D:\\img2.jpg");
TabbedPane1.addTab("Tab1",Icon1,panel1);
TabbedPane1.addTab("Tab2",Icon2,panel2);

حال برنامه را اجرا و نتیجه را مشاهده کنید :
JTabbedPane-in-java-10

سازنده کلاس JTabbedPane (خط 12) دو پارامتر می گیرد :

JTabbedPane TabbedPane1 = new JTabbedPane(tabPlacement, tabLayoutPolicy);

با استفاده از پارامتر اول می توان کنترل JTabbedPane را در قسمت بالا، راست، چپ و پایین فریم قرار داد. برای این کار کافیست یکی از مقادیر زیر را در خط 12 و در داخل پرانتز بنویسید :

  • JTabbedPane.TOP
  • JTabbedPane.RIGHT
  • JTabbedPane.LEFT
  • JTabbedPane.BOTTOM

خروجی پس از قرار دادن این مقادیر می تواند هر یک از حالات زیر باشد :
JTabbedPane-in-java-07

با استفاده از پارامتر دوم هم می توان Tab ها را در یک یا چند خط نمایش داد. پارامتر دوم می تواند شامل مقادیر زیر باشد :

  • JTabbedPane.SCROLL_TAB_LAYOUT
  • JTabbedPane.WRAP_TAB_LAYOUT

خروجی پس از قرار دادن این مقادیر می تواند هر یک از حالات زیر باشد :

JTabbedPane-in-java-08
حال فرض کنید که می خواهیم کنترل های دیگری در داخل این دو تب قرار دهیم. چون از قبل دو Panel به هر دو تب اضافه کرده ایم کافیست که کنترل های دیگر را در این دو Panel قرار دهیم. در خط 11 کد بالا کدهای زیر را بنویسید :

panel1.setLayout(new GridLayout(2,2,10,10));
panel2.setLayout(new GridLayout(2,2,10,10));

JButton button1 = new JButton("Button1");
JButton button2 = new JButton("Button2");
JButton button3 = new JButton("Button3");
JButton button4 = new JButton("Button4");

JCheckBox checkbox1 = new JCheckBox("CheckBox1");
JCheckBox checkbox2 = new JCheckBox("CheckBox2");
JCheckBox checkbox3 = new JCheckBox("CheckBox3");
JCheckBox checkbox4 = new JCheckBox("CheckBox4");

panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);

panel2.add(checkbox1);
panel2.add(checkbox2);
panel2.add(checkbox3);
panel2.add(checkbox4);

در این کدهای دو Panel را به دو سطر و دو ستون تقسیم کرده و در داخل panel1 چهار دکمه و در داخل panel2 چهار چک باکس قرار داده ایم :
JTabbedPane-in-java-02

JTabbedPane-in-java-03
و در آخر هم این نکته را یاد آور شویم که برای راست چین کردن کنترل JTabbedPane می توان از متد ()setComponentOrientation به صورت زیر استفاده کرد :

TabbedPane1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

خروجی بعد از اعمال کد بالا می تواند به صورت زیر باشد :
JTabbedPane-in-java-09