java GUI(UI創建與監聽機制)

/*
 * GUI(Graphical User Interface):圖像用戶接口。
 * CLI:命令用戶接口。
 * java爲GUI提供的對象都在java.Awt中和javaSwing兩個包中。
 * java.Awt:(Abstract Window ToolKit)抽象窗口工具包,需要調用本地系統方法實現功能。屬於重量控件。
 * javax.Swing:在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的組件,而且完全由java實現,增強了移植性,屬於輕量級控件。
 * 一.佈局:容器中的組件的排放方式,就是佈局。
 * 1.FlowLayout(流式佈局管理)
 * 從左到右的順序排列,Panel(面板)默認的佈局管理器。
 * 2.BorderLayout(邊界佈局管理器)
 * 東南西北中,Frame默認的佈局管理器。
 * 3.GridLayout(網格佈局管理器)
 * 規則的矩陣。
 * 4.CardLayout(卡片佈局管理器)
 * 選項卡。
 * 5.GridBagLayout(網格包佈局管理器)
 * 非規則的矩陣。
 */
import java.awt.*;
public class GuiDemo {
public static void main(String[] args) {
AwtDemo();
System.out.println("gogoing");
}
//定義一個窗體,設置窗體名稱,設置窗體可見。
public static void AwtDemo()
{
//設置窗體名稱,
Frame f=new Frame("my awt");
//設置窗體可見
f.setVisible(true);
}

}


/*
 * 一.創建圖形化界面:
 * 1.創建frame窗體。
 * 2.對窗體進行基本設置,如:大小,位置,佈局。
 * 3.定義組件。
 * 4.將組建通過窗體的add方法添加到窗體中。
 * 5.讓窗體顯示,通過setViseble(true)。
 * 


 * 二.事件監聽機制的特點:
 * 1.事件源:
 * awt包或者swing包中的那些圖形界面組件。
 * 2.事件:
 * 每一個事件源都有自己特有的對應事件和共性事件。
 * 3.監聽器:
 * 將可以出發某一個事件的動作(不只一個動作)都已經封裝到了監聽器中。
 *以上三者都在java中定義好了,直接獲取對象。
 * 4.事件處理:
 * 程序員自己需要對產生的動作進行處理。
 * 
 */
import java.awt.*;
import java.awt.event.*;
public class AwtDemo {
public static void main(String[] args) {
FrameDemo();
}
public static void FrameDemo()
{
//創建frame窗體。
Frame f=new Frame();
//對窗體進行基本設置,如:大小,位置,佈局。
f.setSize(500,500);
f.setTitle("lol客戶端");
f.setLocation(300,300);
f.setLayout(new FlowLayout());

//定義組件,;並且添加屬性。
Button b=new Button("我是一個按鈕");
f.add(b);


//用窗體調用添加監聽器的方法,方法裏必須接收一個(監聽器)windowListtener接口子類對象。
//而該接口裏有七個方法,子類必須全部複寫,而我們只需要調用我們需要的方法,所以此方法不行。
//該接口的抽象子類WindowAdapter複寫了其全部的方法,而且不是抽象。
//所以我們定義該類的子類,並且複寫我們需要的方法,即可。
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//e表示事件的所有信息,沒有很大意義。
System.out.println("close windos"+e.toString());
System.exit(0);

}


});
//讓窗體顯示
f.setVisible(true);
}
}
/*定義WindowAdapter子類。
class MyWin extends WindowAdapter
{
//窗體關閉動作處理方式,只要監聽器一監聽到用戶的關閉動作就會自動調用此方法進行處理。
public void windowClosing(WindowEvent e)
{
//System.out.println("close windos");
System.exit(0);
}
}*/

import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
//先定義該圖形中所需要的組件的引用。
private Frame f;
private Button but;
FrameDemo()
{
init();
}
//對圖形化界面進行初始化。
public void init()
{
f=new Frame("my frame");
//對frame進行基本設置,該方法包含setsize和setlocation.
f.setBounds(200,200,400,300);
f.setLayout(new FlowLayout());
but=new Button("my button");
//將組建添加到frame中
f.add(but);
//顯示窗體之前,加載一下窗體上的事件。
myEvent();
//顯示窗體
f.setVisible(true);
}
private void myEvent()
{
//爲窗體添加監聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent e)
{
System.exit(0);
}
});
//讓按鈕具備退出程序的功能。
/*
* 按鈕就是時間源。
* 那麼選擇哪個監聽器,需要查看該組件對象的功能。
* 通過查閱button的api,發現按鈕支持一個特有的監聽addActionListener
*/
//爲按鈕添加一個活動監聽器,ActionListener監聽器不需要適配器,因爲它只有一個方法。
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("退出,按鈕乾的");
System.exit(0);
}
});


}
public static void main(String[] args) {
new FrameDemo();
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章