·一般性設置控件位置和大小:使用
setBounds(int
int
int
int)設置控件坐標大小
但必須加
setLayout(null);
·控件被添加的先後順續決定控件是否可見
即:窗口按層來顯示控件
/*先添加的控件放在第一層後添加的放在後一層
*/如果先添加的控件大小大於後添加的並兩控件處於同一位置則先添加的控件覆蓋後添加的
因此如果想然所有控件都可見則需將在同一位置的兩控件擇面積小的先添加而後才是面積大的
·固定座標(根據絕對座標對控件定位稱為絕對定位)的問題:標簽內的字符串可能被翻譯成另一種語言
或者用戶可能調整了窗口的大小
在兩種情況下
按鈕都會保持固定在它們最初的位置
·使用固定座標的優點:自由設置控件位置大小
·使用固定座標的缺點:窗口改變時許多控件無法顯示
字體變化後按鈕標簽等控件無法顯示其全部內容
·pack()的使用:Window 組件提供 pack() 方法來解決這個問題
當向窗口發送 pack() 時
窗口會調整自身大小
從而提供足夠的空間來顯示其框架中包含的所有控件
設計 GUI 屏幕時
總是指定固定的大小是危險的
此外
控件的位置不應該以 x 和 y 或寬度和高度的形式表示
每個控件包含動態計算首選大小的方法
應該使用這些方法來給您的 GUI 帶來最大的流動性
·計算控件大小的方法:
按鈕 |顯示當前標簽文本 |setLabel(String)或 setText(String)
文本 |顯示很多字符 |setColumns(int)
標簽 |顯示標簽的文本 |setLabel(String)或 setText(String)
文本域 |顯示很多字符的行和列 |setRows(int)和 setColumns(int)
(一)例:使用setBounds(intintintint)設置控件坐標大小必須加setLayout(null); import java
awt
*;
import java
awt
event
*;
public class hh
{
Frame frame;
Button a
b;
public void go()
{
frame = new Frame();
frame
setBounds(
);
frame
setBackground(Color
red);
frame
setLayout(null);//必須加
a=new Button(
a
);
b=new Button(
b
);
frame
add(a);
a
setBounds(
);
frame
add(b);
b
setBounds(
);
frame
setSize(
);
frame
setVisible(true);
}
public static void main(String kio[])
{
hh nu=new hh();
nu
go();
}
}
(
)結果:正常的按照上述所要求的制做了確定控件坐標和大小的窗口
(
)錯誤:
~
:使用
setBounds(int
int
int
int)設置控件坐標大小時必須加
setLayout(null);
按鈕b占了全窗口按鈕a正常
frame
setLayout(null);
(二)例:添加Panel並設置同時測試先後?渠汵????o??順次帶來的控件覆蓋 import java
awt
*;
import java
awt
event
*;
public class hh
{
Frame frame;
Button a
b;
Panel c;//添加一面板
public void go()
{
frame = new Frame();
frame
setBounds(
);
frame
setBackground(Color
red);
frame
setLayout(null);
a=new Button(
a
);
b=new Button(
b
);
c=new Panel();
c
setBounds(
);//設其位置大小
c
setBackground(Color
blue);
frame
add(a);
a
setBounds(
);
frame
add(b);
frame
add(c);//在b後添加它
b
setBounds(
);
frame
setSize(
);
frame
setVisible(true);
}
public static void main(String kio[])
{
hh nu=new hh();
nu
go();
}
}
(
)結果:控件全部顯示
如果將frame
add(c);置於frame
add(b);之前則c面板無法查看
(
)表明:控件被添加的先後順續決定控件是否可見
即:窗口按層來顯示控件
先添加的控件放在第一層後添加的放在後一層
如果先添加的控件大小大於後添加的並兩控件處於同一位置則先添加的控件覆蓋後添加的
因此如果想然所有控件都可見則需將在同一位置的兩控件擇面積小的先添加而後才是面積大的
(三)例:窗口使用pack()調整自身大小 import java
awt
*;
import java
awt
event
*;
public class hh
{
Frame frame;
Button a
b;
public void go()
{
frame = new Frame();
frame
setLayout(new FlowLayout());
a=new Button(
l
);
b=new Button(
okokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
);
frame
add(a);
frame
add(b);
frame
pack(); //缺少frame
setSize(
);
frame
setVisible(true);
}
public static void main(String kio[])
{
hh nu=new hh();
nu
go();
}
}
(
)結果:窗口自動調節並顯示出所有控件
(
)表明:Window 組件提供 pack() 方法來解決這個問題
當向窗口發送 pack() 時
窗口會調整自身大小
從而提供足夠的空間來顯示其框架中包含的所有控件
設計 GUI 屏幕時
總是指定固定的大小是危險的
此外
控件的位置不應該以 x 和 y 或寬度和高度的形式表示
每個控件包含動態計算首選大小的方法
應該使用這些方法來給您的 GUI 帶來最大的流動性
(四)例:使用setColumns(int)設置組件大小 import java
awt
*;
import java
awt
event
*;
public class hh
{
Frame frame;
TextField txt;
public void go()
{
frame = new Frame();
frame
setLayout(new FlowLayout());
txt=new TextField();
txt
setColumns(
);
frame
add(txt);
frame
pack();
frame
setVisible(true);
}
public static void main(String kio[])
{
hh nu=new hh();
nu
go();
}
}
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19294.html