java-圖形使用者介面(GUI)之AWT程式設計-整體思路與程式碼架構
1、整體思路
任何視窗都可以被分解成一個空的容器,容器中盛放了大量的基本元件,通過設定這些基本元件的大小、位置等屬性,就可以將該空的容器和基本元件組成一個整體的視窗。具體實現思路:
1)建立一個Frame頂層視窗
2)設定頂層視窗的佈局(如果需要的話):f.setLayout(new xxxLayout());
3)建立Panel容器/ScrollPane容器
4)設定容器的佈局(如果需要的話):c.setLayout(new xxxLayout());
5)向容器中新增基本元件:按鈕、文字框等
6)將容器依次新增到頂層視窗中
7)設定頂層視窗大小:f.setSize(int width,int height) /
f.pack() 顯示為最佳尺寸
位置:f.setLocation(int x,int y )
同時設定大小與位置:f.setBounds(int x,int y,int width,int height)
可見性:f.setVisible(true)
2、程式碼架構
這裡提供兩種程式碼組織方式:一種是直接在主方法裡邊建立圖形使用者介面;另一種是新寫一個init方法,在該方法中建立圖形使用者介面,然後在主方法中呼叫該方法,這種方式可以是程式碼整體結構更清晰,推薦使用。下面是這兩種程式碼組織方式的具體例子:
(1) 直接在主方法裡邊建立圖形使用者介面
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import javax.swing.JFrame;
public class GridLayoutTest {
public static void main(String[] args) { // TODO Auto-generated method stub JFrame f = new JFrame("計算器"); Panel p1 = new Panel(); p1.add(new TextField(30)); f.add(p1, BorderLayout.NORTH); Panel p2 = new Panel(); p2.setLayout(new GridLayout(3,5,4,4)); String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."}; //一次新增15個按鈕 for(int i=0;i<name.length;i++) { p2.add(new Button(name[i])); } //預設將Panel物件新增到Frame視窗的中間 f.add(p2); f.pack(); f.setVisible(true); }
}
(2)通過init()方法建立圖形使用者介面
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import javax.swing.JFrame;
public class DialogTest {
JFrame f = new JFrame("計算器");
Panel p1 = new Panel();
Panel p2 = new Panel();
public void init() {
p1.add(new TextField(30));
f.add(p1, BorderLayout.NORTH);
p2.setLayout(new GridLayout(3,5,4,4));
String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};
//一次新增15個按鈕
for(int i=0;i<name.length;i++)
{ p2.add(new Button(name[i])); }
//預設將Panel物件新增到Frame視窗的中間
f.add(p2);
f.pack(); f.setVisible(true);
}
public static void main(String[] args)
{ // TODO Auto-generated method stub
new DialogTest().init(); }
}