一、GUI(圖形用戶(hù)界面)
Graphical User Interface(圖形用戶(hù)接口)。 ? 用圖形的方式,來(lái)顯示計(jì)算機(jī)操作的界面,這樣更方便更直 觀(guān)。
CLI ? Command line User Interface (命令行用戶(hù)接口) ? 就是常見(jiàn)的Dos命令行操作。 ? 需要記憶一些常用的命令,操作不直觀(guān)。
舉例: ? 比如:創(chuàng)建文件夾,或者刪除文件夾等
Java為GUI提供的對(duì)象都存在java.Awt和javax.Swing兩個(gè)包中
二、Awt與Swing
java.Awt:Abstract Window ToolKit (抽象窗口 工具包 ),需要調(diào)用本地系統(tǒng)方法實(shí)現(xiàn)功能。屬 重量級(jí)控件。 ? javax.Swing:在AWT的基礎(chǔ)上,建立的一套圖 形界面系統(tǒng),其中提供了更多的組件,而且完全 由Java實(shí)現(xiàn)。增強(qiáng)了移植性,屬輕量級(jí)控件
三、繼承關(guān)系圖

Container:為容器,是一個(gè)特殊的組件,該組件中可以通過(guò)add 方法添加其他組件進(jìn)來(lái)
四、布局管理器
容器中的組件的排放方式,就是布局。
常見(jiàn)的布局管理器:
?FlowLayout(流式布局管理器)
?從左到右的順序排列。
?Panel默認(rèn)的布局管理器。
?BorderLayout(邊界布局管理器)
?東,南,西,北,中 ?Frame默認(rèn)的布局管理器。
?GridLayout(網(wǎng)格布局管理器)
?規(guī)則的矩陣 ?CardLayout(卡片布局管理器)
?選項(xiàng)卡
?GridBagLayout(網(wǎng)格包布局管理器)
?非規(guī)則的矩陣
五、建立一個(gè)簡(jiǎn)單的窗體
Container常用子類(lèi):Window Panel(面板, 不能單獨(dú)存在。)
Window常用子類(lèi):Frame Dialog
簡(jiǎn)單的窗體創(chuàng)建過(guò)程: ? Frame f = new Frame(“my window”);
? f.setLayout(new FlowLayout());
? f.setSize(500,400);//設(shè)置窗體大小
? f.setLocation(300,200);//設(shè)置窗體出現(xiàn)在屏幕的位置
? f.setVisible(true);

/*
創(chuàng)建圖形化界面,
1,創(chuàng)建frame窗體
2,對(duì)窗體進(jìn)行基本設(shè)置
比如大小,位置,布局
3,電儀組件
4,將組件通過(guò)窗體的add方法添加到窗體中
5,讓窗體顯示,通過(guò)Setvisble();
時(shí)間監(jiān)聽(tīng)機(jī)制的特點(diǎn):
1,事件源
2,事件
3,監(jiān)聽(tīng)器
4,事件處理
事件源:就是awt包或者swing包中的那些圖像化界面組件
事件:每一個(gè)事件源都有自己特有的對(duì)應(yīng)事件和共性事件。
監(jiān)聽(tīng)器:將可以觸發(fā)某一個(gè)事件(不只一個(gè)動(dòng)作)的動(dòng)作都已經(jīng)封裝帶了監(jiān)聽(tīng)器中。
以上三者,在java中都已經(jīng)定義好了。
直接獲取其對(duì)象來(lái)用就可以了。
我們要做的事情,就是對(duì)產(chǎn)生的動(dòng)作進(jìn)行處理。
package day22;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo
{
public static void main(String[] args)
{
//創(chuàng)建窗體,圖行畫(huà)界面是外一個(gè)線(xiàn)程。默認(rèn)邊界布局
Frame f = new Frame("my awt");
//設(shè)置窗體長(zhǎng)(橫坐標(biāo))和寬(縱坐標(biāo))
f.setSize(500,100);
//窗體彈出的位置
f.setLocation(300,200);
//布局,流式布局
f.setLayout(new FlowLayout());
Button b = new Button("我是一個(gè)按鈕");
f.add(b);
//只有一個(gè)方法,寫(xiě)匿名內(nèi)部類(lèi)
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("我關(guān)");
System.exit(0);
}
public void windowActivated(WindowEvent e)
{
//窗體前置
System.out.println("我活了");
}
public void windowOpened(WindowEvent e)
{
System.out.println("我被打開(kāi)了");
}
});
f.setVisible(true);
System.out.println("hello world");
}
}
/*
class MyWin implements WindowListerner
{
//覆蓋7個(gè)方法.可是我只用到了關(guān)閉的動(dòng)作。其他動(dòng)作都沒(méi)有用到,可是必須復(fù)寫(xiě)。
}
*/
//因?yàn)閃indowlistener的子類(lèi)WindowAdapter已經(jīng)實(shí)現(xiàn)了WindowListener
//并覆蓋了其中的所有方法。那么我們只要繼承Windowadapter覆蓋我們需要的方法接口
class MyWin extends WindowAdapter
{
@Override
public void windowActivated(WindowEvent e)
{
//System.out.println("window close"+e.toString());
System.exit(0);
}
}