java介面編程(3),java介面編程

來源:互聯網
上載者:User

java介面編程(3),java介面編程

本文是自己學習所做筆記,歡迎轉載,但請註明出處:http://blog.csdn.net/jesson20121020

   在java 中,組件放置在表單上的方式可能與其他的GUI系統都不相同。首先,它完全基於代碼,沒有用來控制組件布置的“資源”。第二,組件旋轉在表單上的方式不是通過絕對座標控制,而是由“布局管理器”根據組件加入的順序決定位置。使用不同的布局管理器,組件的大小,形狀和位置將大不相同,此外,布局管理器還可以適應applet或應用程式視窗的大小,所以如果視窗的尺寸改變了,組件的大小,形狀和位置也能夠做出相應的改變。

   JApplet,JFrame, JDialog. JPanel等都可以包含和顯示組件。Container中有一個稱為setLayout()的方法,可以通過這個方法來選擇不同的而已管理器。本節就來示範各個不同的布局管理器的效果。

布局管理器:
1. BorderLayout

   JFrame使用BorderLayout作為預設的配置模式。它將接受add()方法將加入的組件放在中央,然後將組件向各個方向展開,直到與邊框對齊。

   BorderLayout具有四個邊框地區和一個中央地區的概念,當向BorderLayout管理的面板加入組件時,可以使用重載的add()方法,它的第一個參數接受一個常量值,可以是以下任何一個:

常量 解釋
BorderLayout.NORTH 頂端
BorderLayout.SOUTH 底端
BorderLayout.EAST 右端
BorderLayout.WEST 左端
BorderLayout.CENTER 從中央可始填充,直到與其他組件功邊框相遇

  如果沒有指定放置的位置,則預設是放置在中央。

下面的代碼就直接示範了上述表格的5個位置:

public class SwingTest extends JFrame{public SwingTest() {super("Hello Swing");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 200);setVisible(true);            add(BorderLayout.NORTH,new JButton("North"));add(BorderLayout.SOUTH,new JButton("South"));add(BorderLayout.EAST,new JButton("EAST"));add(BorderLayout.WEST,new JButton("WEST"));add(BorderLayout.CENTER,new JButton("Center"));    }public static void main(String[] args) throws InterruptedException {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubnew SwingTest();}});}
  效果如下:


2.FlowLayout

  FlowLayout布局直接將組件從左至右“流動”到表單上,直到佔滿上方的空間,然後向下移動一行,繼續流動。在使用FlowLayout布局的情況下,組件將呈現“合適”的大小,如,JButton的大小就是其標籤的大小。

  主要代碼如下:

     //FlowLayout布局 setLayout(new FlowLayout());for(int i = 0;i < 20;i++){add(new JButton("Button "+i));}
  效果:

 這時,你可以拖動表單縮放表單,裡面的組件也會隨著表單的變化而變化。

3. GridLayout

  GridLayout允許構建一個旋轉組件的表格,在向表格裡面添加組件的時候,它們將按照從左至右,從上到小的順序加入。在構造器中要指定需要的行數和列數,它們將均勻分布在表單上。

//GridLayout布局 setLayout(new GridLayout(7,3));for(int i = 0;i < 20;i++){add(new JButton("Button "+i));}
    效果如下:

4. GridBagLayout 

  GridLayout提供了強大控制功能,包括精確判斷視窗地區如何布局,以及視窗大小變化時如何重新放置組件。不過,它也是最複雜的布局管理器,因此,可以考慮使用TableLayout來替代。

5.  絕對位置

  也可以設定圖形組件的絕對位置:

  1) 使用setLayout(null)方法把視窗的布局管理器設定為空白。

  2)    為每個組件調用setBounds(),為該方法傳遞以像素座標為單位的邊界矩形的參數。

6. BoxLayout

       BoxLayout具有GridBagLayout的許多好處,卻不像GridBagLayout那麼複雜。 BoxLayout可以在水平方向或者垂直方向控制組件的位置,並且通過所謂的“支架和膠水”的機制來控制組件的間隔。

總結:

  這麼多的布局管理器,事實上,在某些情況下,手工編寫GUI表單就不太合適了,這樣做太複雜,也不能充分利用編程時間,所以對於較複雜的表單還是要用GUIS構造工具,我們只需要理解布局的方式以及如何處理事件即可。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.