分类: Java
2009-02-28 21:43:52
.测试程序一:
代码:
import java.awt.*;
public class TestFrame{
public static void main(String[] args){
MyFrame f1 = new MyFrame("just!",30,30,400,400);
}
}
class MyFrame extends Frame{
private Panel p1,p2,p3,p4;
MyFrame(String s,int x,int y,int w,int h){
super(s);
// setLayout(new FlowLayout());
setLayout(new GridLayout(2,2));
p1 = new Panel();
p2 = new Panel(null);
p3 = new Panel(null);
p4 = new Panel(null);
p1.setBounds(0,0,w/2,h/2);
p2.setBounds(0,h/2,w/2,h/2);
p3.setBounds(w/2,0,w/2,h/2);
p4.setBounds(w/2,h/2,w/2,h/2);
p1.setBackground(Color.blue);
p2.setBackground(Color.green);
p3.setBackground(Color.yellow);
p4.setBackground(Color.red);
Button btn1 = new Button("f");
Button btn2 = new Button("d");
p1.add(btn1);
p1.add(btn2);
add(p1);
add(p2);
add(p3);
add(p4);
setBounds(x,y,w,h);
setVisible(true);
setResizable(true);
}
}
1.当Panel p1 = new Panel(null);时表示p1上不能加任何组件,其大小和位置由setBounds(int x,int y,int width,int height)决定。
2.当Panel p1 = new Panel();时表示p1上可以增加其他组件,这时p1的大小将有所加入的组建大小决定。
3.当Panel p1 = new Panel();且他的上面没有再加其他组件时p1的大小将是默任的大小应该是5个像素的宽度。
4. public TextField(int columns)
throws
构造具有指定列数的新空文本字段。列是近似平均字符宽度,它与平台有关。
5.当为GridLayout布局时,对Panel的大小设定将不再起作用(尽管此时为Panel p1 = new Panel(null)),当指定了GridLayout的布局模式(比如GridLayout(2,2))则新加入的组件按照所指定的格局排列,如果组件数目不足则优先满足行的排列;若没有明确指定GridLayout的格局模式则将按照竖向排列各组件。
6.可以设置Button的大小和位置,用来确定Button之间的间距,由此应该可以解决Button之间紧挨的问题。
setBounds(),setSize(),setLocation();这些方法都可以考虑应用。
7.Frame的默认布局管理器是BorderLayout
Panel的默认布局管理器是FlowLayout
8.当panel p1设置为setLayout(null)时直接用p1.add(btn1)方法无法在panel p1上天加按钮,因为此时系统无法确定Button该放在何处,此时要想正常显示button则要用方法setBounds()来指定Button的位置。
9.JFrame的默认布局管理器也是BorderLayout。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);可以使得JFrame正常退出。