java組件和容器

來源:互聯網
上載者:User

  Java的圖形化使用者介面的最基本組成部分是組件(Component),組件是一個可以以圖形化的方式顯示在螢幕上並能與使用者進行互動的對象,例如一個按鈕,一個標籤等。組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來。

  類java.awt.Component是許多組件類的父類,Component類中封裝了組件通用的方法和屬性,如圖形的組件對象、大小、顯示位置、前景色彩和背景色、邊界、可見度等,因此許多組件類也就繼承了Component類的成員方法和成員變數,相應的成員方法包括:

   getComponentAt(int x, int y)
   getFont()
   getForeground()
   getName()
   getSize()
   paint(Graphics g)
   repaint()
   update()
   setVisible(boolean b)
   setSize(Dimension d)
   setName(String name)等
  
  容器(Container)也是一個類,實際上是Component的子類,因此容器本身也是一個組件,具有組件的所有性質,但是它的主要功能是容納其它組件和容器。

  布局管理器(LayoutManager):每個容器都有一個布局管理器,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調用其對應的布局管理器。

  為了使我們產生的圖形化使用者介面具有良好的平台無關性,Java語言中,提供了布局管理器這個工具來管理組件在容器中的布局,而不使用直接設定組件位置和大小的方式。

  在程式中安排組件的位置和大小時,應該注意以下兩點:
  1.容器中的布局管理器負責各個組件的大小和位置,因此使用者無法在這種情況下設定組件的這些屬性。如果試圖使用Java 語言提供的setLocation(),setSize(),setBounds() 等方法,則都會被布局管理器覆蓋。

  2.如果使用者確實需要親自設定組件大小或位置,則應取消該容器的布局管理器,方法為:
   setLayout(null);

 常用容器

  容器java.awt.Container是Component的子類,一個容器可以容納多個組件,並使它們成為一個整體。容器可以簡化圖形化介面的設計,以整體結構來布置介面。所有的容器都可以通過add()方法向容器中添加組件。

  有三種類型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。

  1.Frame
  2. Panel

 

 1.Frame

  

  以下是容器的例子:

 例5.1
  import java.awt.*;
  public class MyFrame extends Frame{
  public static void main(String args[ ]){
        MyFrame fr = new MyFrame("Hello Out There!");
                       //構造方法
        fr.setSize(200,200);
                //設定Frame的大小,預設為(0,0)
        fr.setBackground(Color.red);
                //設定Frame的背景,預設為紅色
        fr.setVisible(true);
                //設定Frame為可見,預設為不可見
  }
     public MyFrame (String str){
        super(str); //調用父類的構造方法
     }
  }

   一般我們要產生一個視窗,通常是用Window的子類Frame來進行執行個體化,而不是直接用到Window類。Frame的外觀就像我們平常在windows系統下見到的視窗,有標題、邊框、菜單、大小等等。每個Frame的對象執行個體化以後,都是沒有大小和不可見的,因此必須調用setSize( )來設定大小,調用setVisible(true)來設定該視窗為可見的。

  另外,AWT在實際的運行過程中是調用所在平台的圖形系統,因此同樣一段AWT程式在不同的作業系統平台下運行所看到的圖形系統是不一樣的。例如在windows下運行,則顯示的視窗是windows風格的視窗;而在UNIX下運行時,則顯示的是UNIX風格的視窗。

 2. Panel

  

 例5.2
  import java.awt.*;
  public class FrameWithPanel extends Frame{
  public FrameWithPanel(String str){
        super(str);
      }

      public static void main(String args[]){
        FrameWithPanel fr = new FrameWithPanel("Frame with Panel");
        Panel pan=new Panel();
        fr.setSize(200,200);
        fr.setBackground(Color.red);
               //架構fr的背景顏色設定為紅色
        fr.setLayout(null);
               //取消布局管理器
        pan.setSize(100,100);
        pan.setBackground(Color.yellow);
               //設定面板pan的背景顏色為黃色
        fr.add(pan); //用add方法把面板pan添加到架構fr中
        fr.setVisible(true);
        }
   }

    一般我們要產生一個視窗,通常是用Window的子類Frame來進行執行個體化,而不是直接用到Window類。Frame的外觀就像我們平常在windows系統下見到的視窗,有標題、邊框、菜單、大小等等。每個Frame的對象執行個體化以後,都是沒有大小和不可見的,因此必須調用setSize( )來設定大小,調用setVisible(true)來設定該視窗為可見的。

  另外,AWT在實際的運行過程中是調用所在平台的圖形系統,因此同樣一段AWT程式在不同的作業系統平台下運行所看到的圖形系統是不一樣的。例如在windows下運行,則顯示的視窗是windows風格的視窗;而在UNIX下運行時,則顯示的是UNIX風格的視窗。



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.