1. 程式人生 > >java:Applet佈局問題,如何新增按鈕,標籤問題總結

java:Applet佈局問題,如何新增按鈕,標籤問題總結

今天學習了applet佈局問題:
按鈕、標籤是怎樣加入到applet程式(容器)當中去的呢?
需要用到佈局容器管理器(LayoutManager):它用於協助容器確定加入的元件(按鈕等)應該放置的位置

awt提供了4中常用的佈局容器管理器
>>FlowLayout
>>BorderLayout
>>GridLayout
>>CardLayout

applet預設使用FlowLayout,applet使用容器管理器的方法如下:
setLayout (new BorderLayout)
setLayout()方法是applet類繼承Container類中的方法而來,因此在applet程式中可以直接呼叫

applet加入按鈕一定需要上面的容器管理器麼?
不一定,可以先 setLayout(null); 然後自己確定元件放置的細節,程式碼麻煩。

如果你不用佈局管理器(Jframe中的用法):   
   JButton    b1    =    new    JButton("hello");   
   getContentPane().add(b1);   
   b1.setLocation(100,10);   

以下是容器管理器常用的4種佈局寫法

=================================================
applet 使用 FlowLayout 佈局:
指定佈局:setLayout(new FlowLayout())
加入元件:add(元件例項)
作用:由左到右,由上到下依次放置元件
加入元件使用applet類繼承Container類中的方法成員add();


=================================================
import java.awt.*;
import java.applet.*;
public class UseFlowLayout extends Applet{
public void init()
{
       setLayout(new FlowLayout()); //因為是預設管理器,可以省略
//setLayout()方法是applet類繼承Container類中的方法而來,因此在applet程式中可以直接呼叫
       for(int i = 0; i<5;i++){
        add(new Button("按鈕" + i )); //加入5個按鈕
//applet類繼承Container類中的方法成員add();
       }
}
}

==================================================
applet使用BorderLayout();
指定佈局:setLayout(new BorderLayout());
加入元件:add(元件例項,位置常量)
作用:此種佈局將容器劃分為5個區域,分別是上、下、左、右、中
[位置常量]指定了元件將要放置的位置,
如果元件不足5個,放在中間位置的元件將自動填充空餘位置
==================================================

import java.awt.*;
import java.applet.*;
public class UseBorderLayout extends Applet{ //介面Applet
public void init()
{

       setLayout(new BorderLayout()); //因為是預設管理器,可以省略
       add(new Button("按鈕上"),BorderLayout.NORTH);
       add(new Button("按鈕右"),BorderLayout.EAST);

       //?setHgap(50);想設定元件的水平和垂直的邊距,看下面的GridLayout使用方法
       add(new Button("按鈕中"),BorderLayout.CENTER);
       //add(new Button("按鈕下"),BorderLayout.SOUTH) //引上是為了測試自動填充效果
       //add(new Button("按鈕左"),BorderLayout.WEST) //引上是為了測試自動填充效果
}
}

==================================================
applet使用GridLayout();
指定佈局:setLayout(new GridLayout(列數,行數))
加入元件:add(元件例項)
作用:左-->右,上-->下,分成指定的網格
==================================================
import java.awt.*;
import java.applet.*;

public class UseGridLayout extends Applet{ //介面Applet
public void init()
{
//setLayout(new GridLayout(3,4));           //書上的寫法,我的寫法如下:

            //宣告一個佈局管理器:為表格形式 3行 4列
            GridLayout GL = new GridLayout(3,4);
            GL.setHgap(20);     //設定元件的水平和垂直的邊距
            GL.setVgap(20);
            this.setLayout(GL);         //是哪個類物件的方法?!是this:當前applet
  
            //加入按鈕
            for(int i=0;i<12;i++)
            {
             this.add(new Button("按鈕" + i)) ;
                                     //add方法是哪個類物件的?!也是當前面板的方法
         }
}
}


=========================================================
+applet使用 CardLayout容器管理器
指定容器管理器:setLayout(new CardLayout())
加入元件:add(元件例項,"指定元件名稱")
顯示元件:CL.show(this."button1"),next,previous,first
作用:元件加入容器applet中,然後按照需要調出,被調出的元件遮蓋本容器內的所有元件
。。。注意,applet是容器,但不是唯一的,applet還可以加入多個容器!詳細內容明天再學
=========================================================
import java.awt.*;
import java.applet.*;
public class UseCardLayout extends Applet{ //介面Applet
public void init()
{
       //指定當前applet佈局管理器為CardLayout.
       CardLayout CL = new CardLayout();
       setLayout(CL);

       //加入按鈕
       for(int i=0;i<12;i++)
       {
        add(new Button("按鈕" + i),"button" + i) ;
       }

       CL.show(this,"button11");       //將指定按鈕顯示出來
       CL.next(this);        //轉到下一個按鈕,這裡說明迴圈顯示的效果,顯示出是button0;
       //還有CL.first(this)等方法==如:last,previous,next,first,顯示指定的就用上面的方法
}
}

以上是applet作為容器,需要用到的最常用的元件佈局辦法

實際上一個容器還可以使用多個LayoutManager,

用Panel!
Panel屬於awt元件的容器類,也就是說它可以用來放置其他的awt元件,
她的重要特點就是:擁有獨立的座標系統和layoutmanager.

Panel 與 LayoutManager結合可以做出更符合需要的applet介面!

---附applet測試頁面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<applet code="UseBorderLayout.class" width=400 height=300></applet>
</BODY>
</HTML>
紅色部分替換成相應的佈局類