作者:郭嘉
郵箱:allenwells@163.com
部落格:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell 一 BorderLayout
BorderLayout是一種簡單的布局策略,可以將其看作一個組件。它把容器分為東、南、西、北、中5個地區,每個組件將佔據某個地區。而
這5個地區分別被命名為NORTH, WEST, EAST, CENTER, SOUTH,它們都被定義為靜態
常量.靜態常量可以直接引用,如下所示: Public static final String NORTH = “North” 整個內容面板的北邊 Public static final String WEST = “West” 整個內容面板的西邊 Public static final String EAST = “EasT” 整個內容面板的東邊 Public static final Sning CENTER = “Center” 整個內容面板的中間 Public static final String SOUTH = “South” 整個內容面板的南邊
舉例1
如何使用BorderLayout布局管理器將組件進行布局。
import javax.swing.*;import java.awt.*;public class BorderLayoutDemo1{ static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("生活"); JButton b2=new JButton("工作"); JButton b3=new JButton("睡覺"); JButton b4=new JButton("購物"); JButton b5=new JButton("飲食"); BorderLayout lay=new BorderLayout();//建立一個布局管理器對象,將中間容器設定為此布局管理 jf.setLayout(lay); contentPane.add(b1,"North");//將五個普通按鈕組件分別按照東、南、西、北、中五個方位添加到中間容器中 contentPane.add(b2,"South"); contentPane.add(b3,"East"); contentPane.add(b4,"West"); contentPane.add(b5,"Center"); } }
運行結果如下圖所示:
舉例2
將五個內容面板添加到於頂層容器相關連的內容面板中的五個不同方向,而本身這五個內容面板中也分別包含了位於五個不同方向的按鈕組件。
//這段代碼主要是為讀者展示如何將五個內容面板添加到於頂層容器相關連的內容面板中的五個不同方向,而本身這五個內容面板中也分別包含了位於五個不同方向的按鈕組件import javax.swing.*;import java.awt.*;public class BorderLayoutDemo2{static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("港幣");//建立了二十五個普通按鈕組件 JButton b2=new JButton("人民幣"); JButton b3=new JButton("美元"); JButton b4=new JButton("歐元"); JButton b5=new JButton("英鎊"); JButton b6=new JButton("主板"); JButton b7=new JButton("記憶體"); JButton b8=new JButton("硬碟"); JButton b9=new JButton("顯示器"); JButton b10=new JButton("滑鼠"); JButton b11=new JButton("大米"); JButton b12=new JButton("蔬菜"); JButton b13=new JButton("稻子"); JButton b14=new JButton("豬肉"); JButton b15=new JButton("牛肉"); JButton b16=new JButton("麵包"); JButton b17=new JButton("蛋糕"); JButton b18=new JButton("巧克力"); JButton b19=new JButton("乳酪"); JButton b20=new JButton("蘋果派"); JButton b21=new JButton("筆記本"); JButton b22=new JButton("電話"); JButton b23=new JButton("辦公桌"); JButton b24=new JButton("鋼筆"); JButton b25=new JButton("檔案夾"); jf.setLayout(new BorderLayout()); JPanel p1=new JPanel();//建立了五個中間容器,並且將它們的布局管理器都設定成BorderLayout方式。 JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); p1.setLayout(new BorderLayout()); p2.setLayout(new BorderLayout()); p3.setLayout(new BorderLayout()); p4.setLayout(new BorderLayout()); p5.setLayout(new BorderLayout()); contentPane.add(p1,"North");//將五個中間容器物件分別加入到上層中間容器中,並且是按照BorderLayout的方式進行布局 contentPane.add(p2,"South"); contentPane.add(p3,"East"); contentPane.add(p4,"West"); contentPane.add(p5,"Center"); p1.add(b1,"North");///將從第一個到第五個普通按鈕組件按照BorderLayout方式布局到p1中間容器中 p1.add(b2,"West"); p1.add(b3,"South"); p1.add(b4,"East"); p1.add(b5,"Center"); p2.add(b6,"North");//將從第六個到第十個普通按鈕組件按照BorderLayout方式布局到p2中間容器中 p2.add(b7,"West"); p2.add(b8,"South"); p2.add(b9,"East"); p2.add(b10,"Center"); p3.add(b11,"North");//將從第十一個到第十五個普通按鈕組件按照BorderLayout方式布局到p3中間容器中 p3.add(b12,"West"); p3.add(b13,"South"); p3.add(b14,"East"); p3.add(b15,"Center"); p4.add(b16,"North");//將從第十六個到第二十個普通按鈕組件按照BorderLayout方式布局到p4中間容器中 p4.add(b17,"West"); p4.add(b18,"South"); p4.add(b19,"East"); p4.add(b20,"Center"); p5.add(b21,"North");//將從第二十一個到第二十五個普通按鈕組件按照BorderLayout方式布局到p5中間容器中 p5.add(b22,"West"); p5.add(b23,"South"); p5.add(b24,"East"); p5.add(b25,"Center"); } }
運行結果如下圖所示:
二 FlowLayout
FlowLayout按照組件加入的先後順序從左至右排列,一行徘滿了,再換下一行,然後繼續從左至右排列,每一行的組件都是置中排列的。
舉例1
FlowLayout布局管理器的使用方法
//這段代碼主要是為讀者展示FlowLayout布局管理器的使用方法import javax.swing.*;import java.awt.*;public class FlowLayoutDemo1{static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("港幣"); JButton b2=new JButton("人民幣"); JButton b3=new JButton("美元"); JButton b4=new JButton("歐元"); JButton b5=new JButton("英鎊"); contentPane.setLayout(new FlowLayout());//將中間容器的布局管理器設定為FlowLayout contentPane.add(b1); //將五個按鈕分別按照FlowLayout布局管理器方式添加到中間容器中 contentPane.add(b2); contentPane.add(b3); contentPane.add(b4); contentPane.add(b5); jf.pack(); } }
運行效果如下圖所示:
舉例2
將FlowLayout布局管理器同頂層容器關聯,然後再在其中添加五個布局管理器的內容面板,而這個內容面板,每一個內容面板添加五個組件,每一個內容面板是按照BorderLayout布局管理方式排列組件。
import javax.swing.*;import java.awt.*;public class FlowLayoutDemo2{static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("港幣");//建立了二十五個普通按鈕組件 JButton b2=new JButton("人民幣"); JButton b3=new JButton("美元"); JButton b4=new JButton("歐元"); JButton b5=new JButton("英鎊"); JButton b6=new JButton("主板"); JButton b7=new JButton("記憶體"); JButton b8=new JButton("硬碟"); JButton b9=new JButton("顯示器"); JButton b10=new JButton("滑鼠"); JButton b11=new JButton("大米"); JButton b12=new JButton("蔬菜"); JButton b13=new JButton("稻子"); JButton b14=new JButton("豬肉"); JButton b15=new JButton("牛肉"); JButton b16=new JButton("麵包"); JButton b17=new JButton("蛋糕"); JButton b18=new JButton("巧克力"); JButton b19=new JButton("乳酪"); JButton b20=new JButton("蘋果派"); JButton b21=new JButton("筆記本"); JButton b22=new JButton("電話"); JButton b23=new JButton("辦公桌"); JButton b24=new JButton("鋼筆"); JButton b25=new JButton("檔案夾"); contentpane.setLayout(new FlowLayout());//將中間容器的布局管理器設為FlowLayout JPanel p1=new JPanel();//建立五個中間容器,並且將每個中間容器的布局管理器設定為BorderLayout JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); p1.setLayout(new BorderLayout()); p2.setLayout(new BorderLayout()); p3.setLayout(new BorderLayout()); p4.setLayout(new BorderLayout()); p5.setLayout(new BorderLayout()); contentPane.add(p1); //將五個中間容器添加到上層中間容器 contentPane.add(p2); contentPane.add(p3); contentPane.add(p4); contentPane.add(p5); p1.add(b1,"North");//將第一個到第五個普通按鈕添加到p1中 p1.add(b2,"West"); p1.add(b3,"South"); p1.add(b4,"East"); p1.add(b5,"Center"); p2.add(b6,"North");//將第六個到第十個普通按鈕添加到p2中 p2.add(b7,"West"); p2.add(b8,"South"); p2.add(b9,"East"); p2.add(b10,"Center"); p3.add(b11,"North");//將第十個到第十五個普通按鈕添加p3中 p3.add(b12,"West"); p3.add(b13,"South"); p3.add(b14,"East"); p3.add(b15,"Center"); p4.add(b16,"North");//將第十六個到第二十個普通按鈕添加到p4中 p4.add(b17,"West"); p4.add(b18,"South"); p4.add(b19,"East"); p4.add(b20,"Center"); p5.add(b21,"North");//將第二十一個到第二十五個普通按鈕添加到p5中 p5.add(b22,"West"); p5.add(b23,"South"); p5.add(b24,"East"); p5.add(b25,"Center"); jf.pack(); } }
運行效果如下圖所示:
三 GridLayout
GridLayout將整個空間劃分成若干行乘若干列的網路地區,組件就放於這些小地區內。
舉例1
使用GridLayout布局管理器,在程式中將九個普通按鈕組件按照此布局管理器放置在內容面板中。
import javax.swing.*;import java.awt.*;public class GridLayoutDemo1{ static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("港幣"); JButton b2=new JButton("人民幣"); JButton b3=new JButton("美元"); JButton b4=new JButton("歐元"); JButton b5=new JButton("英鎊"); JButton b6=new JButton("主板"); JButton b7=new JButton("記憶體"); JButton b8=new JButton("硬碟"); JButton b9=new JButton("顯示器"); GridLayout gird=new GridLayout(3,3); //建立一個 GridLayout布局管理器對象,將之行數設為3,列數設為3,並且將之作為中間容器的布局管理器 contentPane.setLayout(gird); contentPane.add(b1); //將九個普通按鈕組件一一添加到中間容器中 contentPane.add(b2); contentPane.add(b3); contentPane.add(b4); contentPane.add(b5); contentPane.add(b6); contentPane.add(b7); contentPane.add(b8); contentPane.add(b9); jf.pack(); } }
運行效果如下圖所示:
舉例2
用GirdLayout布局管理器與頂層視窗關聯,在這個布局管理器中添加FlowLayout布局管理器和BorderLayout布局管理器,最後,在這些布局管理器中添加控制項。
import javax.swing.*;import java.awt.*;public class GridLayoutDemo2{ static final int WIDTH=300; static final int HEIGHT=200; public static void main(String[] args) { JFrame jf=new JFrame("測試程式"); jf.setSize(WIDTH,HEIGHT); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); JPanel contentPane=new JPanel(); jf.setContentPane(contentPane); JButton b1=new JButton("港幣");//建立了二十五個普通按鈕組件 JButton b2=new JButton("人民幣"); JButton b3=new JButton("美元"); JButton b4=new JButton("歐元"); JButton b5=new JButton("英鎊"); JButton b6=new JButton("主板"); JButton b7=new JButton("記憶體"); JButton b8=new JButton("硬碟"); JButton b9=new JButton("顯示器"); JButton b10=new JButton("滑鼠"); JButton b11=new JButton("大米"); JButton b12=new JButton("蔬菜"); JButton b13=new JButton("稻子"); JButton b14=new JButton("豬肉"); JButton b15=new JButton("牛肉"); JButton b16=new JButton("麵包"); JButton b17=new JButton("蛋糕"); JButton b18=new JButton("巧克力"); JButton b19=new JButton("乳酪"); JButton b20=new JButton("蘋果派"); JButton b21=new JButton("筆記本"); JButton b22=new JButton("電話"); JButton b23=new JButton("辦公桌"); JButton b24=new JButton("鋼筆"); JButton b25=new JButton("檔案夾"); GridLayout gird=new GridLayout(3,3); jf.setLayout(gird); JPanel p1=new JPanel();//建立五個中間容器,並且將第一個和第二個,第四個、第五個中間容器的布局方式設定為BorderLayout,而第三個設定為FlowLayout JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); p1.setLayout(new BorderLayout()); p2.setLayout(new BorderLayout()); p3.setLayout(new FlowLayout()); p4.setLayout(new BorderLayout()); p5.setLayout(new BorderLayout()); contentPane.add(p1); //將五個中間容器添加到外層中間容器中 contentPane.add(p2); contentPane.add(p3); contentPane.add(p4); contentPane.add(p5); p1.add(b1,"North");//將第一個組件到第五個組件添加到p1 p1.add(b2,"West"); p1.add(b3,"South"); p1.add(b4,"East"); p1.add(b5,"Center"); p2.add(b6,"North");//將第六個組件到第十個組件添加到p2 p2.add(b7,"West"); p2.add(b8,"South"); p2.add(b9,"East"