* 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();
}
}