前言:最近剛把《Thinking in Java 3rd》解決掉,雖然有C/C++的底子,但是東西一多還是胡亂起來了,最好的記憶方法就是實踐了,對於初出茅廬的我來說,SWING其實是最有吸引力最立杆見影的東西了吧,跟公交線路一樣,總是騎車的人不會對它熟悉到哪裡去。這裡就稍稍談下個人的學習心得之類的吧。
做個最簡只帶按鈕,文本編輯框的SWING吧:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; // 關於監聽後面會講到
/** *//**
* @author SosoAyaen
**/
/** *//**
* root Class named SwingEx
**/
public class SwingEx extends JFrame ...{ // JFrame就是一個頂層容器,這裡直接繼承它
private JButton b1, b2; // 兩個按鈕
private JPanel p1; // JPanel也是一個中間容器
private JTextField t1; // 文本編輯地區
/** *//**
* Method SwingEx建構函式
*
* @param title 程式的標題
*
**/
public SwingEx(String title)...{
super(title); // 調用JFrame的建構函式,把程式標題傳入
b1 = new JButton("Click me!"); // 按鈕上顯示的文本,AWT只能顯示文本,SWING甚至可以顯示圖
b2 = new JButton("Beat me!");
t1 = new JTextField(30); // 設定為30個字元長度
t1.setEditable (true); // 設定t1為可編輯區域
p1 = new JPanel(); // 建立一個JPanel執行個體
p1.setLayout (new FlowLayout());// 設定JPanel的相片順序,以後馬上會說到
p1.add(b2); // 把按鈕b2添加到JPanel裡
p1.add(b1); // 把按鈕b1添加到JPanel裡
p1.add(t1); // 把文本地區t1也添加到JPanel裡面
this.setSize (100, 100); // 注意這個this,指當前SwingEx,它繼承自JFrame,大小設定
this.setLayout (new FlowLayout()); // 同樣設定相片順序,只是對頂層容器的排列
// this.add(b1); // 頂層容器也可以直接添加控制項
this.add(p1); // 把JPanel容器添加到頂層容器中
}
/** *//**
* Method main
*
* @param args
*
**/
public static void main(String[] args)...{
SwingEx se = new SwingEx("Swing Test"); // 建立一個執行個體
se.setVisible (true); // 設定為顯示,show(boolean)是過時的API
}
}
很簡單的程式,不過也是,程式由自己定的啦,想做了簡單可以,要做了複雜亦可,來看看SWING的構建步驟吧:首先就是要匯入類庫了,javax.swing.*當然是必須要匯入的,java.awt.*也同樣是必不可少的,java.awt.event.*這個類庫是主要管理事件的,比如你按下按鈕或者改變文本地區內容之類觸發的事件之類的,以後會講到,而且這個是最重要的喲,因為你所有的事件響應可都離不開它呀,呵呵。直接繼承JFrame個人感覺比較方便,至少現在不覺得麻煩,呵呵,而且本來就是一個Frame的程式是吧,main所在的Class如果是JFrame不是蠻合情合理的麼,容器有好多種,有頂層容器如JFrame等,中間容器如JPanel等,還有其他的,你要做的就是把容器的大小還有相片順序(Layout)設定好,之後就只需要把控制項或者容器通過add(控制項)方法把控制項或者是容器添加進去就行了,注意,中間容器不能添加頂層容器,個人猜想,雖然沒實驗過,但是想想也不合情理是吧,呼呼。最後要做的就是在mian中把這個繼承自JFrame的執行個體setVisible(true)就可以了。