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>
紅色部分替換成相應的佈局類