---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------
第二十四天(GUI)
一,GUI
GUI:Graphical User Interface(圖形用戶接口)
CLI:Command Line User Interface(命令行用戶接口)
二,java提供的包
java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要調用本地系統方法實現功能。屬重量級控件(跨平臺性不太好依賴系統性比較強)
javax.Swing:在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的組件,而且完全由java實現,增強了移植性,屬輕量級控件(依賴系統不太高)
三。體系
Component:
/
\
/
\
/
\
Container-----||------Button按鈕
|--Panel面板
|------Label標籤
|--Window窗口 |------Checkbox複選框
|---Frame框架 |------TextComponent 文本組件
|---Dialog對話框
|------TextArea文件區
|----FileDialog文件對話框|------TextField文件框
注:Container:爲容器,是一個特殊的組件,該組件中可以通過add方法添加其他組件進來
四。佈局
1,容器中的組件的排放方式,就是佈局
2,常見的佈局管理器:
FlowLayout(流式佈局管理器):從左到右的順序排列 。Panel默認的佈局管理器
BorderLayout(邊界佈局管理器):東,南,西,北,中 Frame默認的佈局管理器。如果沒有指定位置,會以最大形式來添充窗體
GridLayout(網格佈局管理器):規則的矩陣
CardLayout(卡片佈局管理器):選項卡
GridBagLayout(網格包佈局管理器):非規則的矩陣
座標式佈局
如果想在一個窗體上加入多種的佈局時,可以在此窗體上添加面板,然後改變面板的佈局方式就可以了
五。Frame類
構造函數 :
Frame(String title) 構造一個新的、最初不可見的、具有指定標題的 Frame 對象。
方法:
void setMenuBar(MenuBar menubar):設置菜單欄
void setVisible(boolean b) :設置窗體是否可見
void setSize(int length(橫),int width(縱));設置窗體大小
void setLocation(x,y):設置窗體的位置距窗體頂點的大小
void setBounds(x,y,width,heigth):設置窗體的位置和大小
void setLayout(佈局管理器對象):設置此窗體的佈局
void add(Component com):添加組件
六。Button類
構造方法:
Button(String title)建立一個帶有名字的按鈕
七。創建圖形化界面的思想:
1.創建frame窗體
2,對窗體進行基本的設置 比如:大小,位置,佈局
3,定義組件
4,將組件通過窗體的add方法添加到窗體中
5,讓窗體顯示出來
八,事件監聽機制
事件監聽機制的特點:
1,事件源 :就是awt包或者swing包中的那些圖形界面組件
2,事件
:每一個事件源都有自己特有的對應事件和共性事件
3,監聽器 :將可以觸發某一個事件的動作(不只一個動作)都已經封裝到了監聽器中
4,事件處理方式
事件源,事件,監聽器,在java中都已經定義好了,直接獲取其對象來用就可以了,我們要做的事就是對產生的動作進行處理
九。窗體事件(抽象類沒有抽象方法WindowApadter,不讓其創建對象。需要複寫其方法)
void addWindowListener(WindowListener l) 添加指定的窗口偵聽器,以從此窗口接收窗口事件。
因爲WindowListener的子類 WindowAdapter已經實現了WindowListener接口,並覆蓋了其中的所有方法。
那麼我只要繼承WindowAdapter覆蓋我需要的方法即可
十。選擇監聽器的方法:
通過關閉窗體示例瞭解到,想要知道那個組件具備什麼樣的特有監聽器,需要查看該組件對象的功能
十一,監聽器
Button addActionListener(ActionListener al) 少數沒有適配器接口的適配器
只有一個actionPerformed(ActionEvent ae)方法(適配器的出現就是方便創建對象,覆蓋方法)
Frame addWindowListener(WindowListener wl) 傳入WindowListener的子類WindowAdapter(適配器)
addKeyListener(KeyListener kl):鍵盤監聽器
addMouseListener(MouseListener ml):鼠標監聽器
注:當Button添加活動監聽和鼠標監聽時,會先執行鼠標監聽器內的動作,活動監聽也可以通過鍵盤來操作
十二
常用方法:
WindowAdapter:
void windowClosing(WindowEvent e); 用戶試圖從窗口的系統菜單中關閉窗口時調用
ActionListener:
void actionPerformed(ActionEvent e);發生操作時調用。
MouseListener:
void mouseClicked(MouseEvent e)鼠標按鍵在組件上單擊(按下並釋放)時調用。
MouseEvent:
public int getClickCount()返回與此事件關聯的鼠標單擊次數。 返回:單擊次數的整數值
KeyListener:
void keyPressed(KeyEvent e)按下某個鍵時調用此方法。有關按下鍵事件的定義,請參見 KeyEvent
的類描述。
KeyEvent:
public
char getKeyChar() 返回與此事件中的鍵關聯的字符。
public
int getKeyCode() 返回與此事件中的鍵關聯的整數 keyCode。
從類 java.awt.event.InputEvent 繼承的方法:
public boolean isAltDown()返回 Alt 修飾符在此事件上是否爲 down。 檢查是否按下Alt鍵
public boolean isControlDown()返回 Control 修飾符在此事件上是爲 down 檢查是否按下Ctrl鍵
public boolean isShiftDown()返回 Shift 修飾符在此事件上是否爲 down。 檢查是否按下Shift鍵
public void consume()使用此事件,以便不會按照默認的方式由產生此事件的源代碼來處理此事件。
TextComponent中的方法:
public String getText()返回此文本組件表示的文本。默認情況下,此文本是一個空字符串。 返回:此
TextComponent 的值
public void setText(String t)將此文本組件顯示的文本設置爲指定文本。 參數:t - 新文本;如果此參數爲
null,則將文本設置爲空字符串 ""會覆蓋原來的數據
TestArea中的方法:
public void append(String str)將給定文本追加到文本區的當前文本。 注意,傳遞 null
或不一致的參數是無效的,並且將導致不確定的行爲。 參數:str - 要追加的非 null 文本
十四。菜單
MenuBar:菜單欄或菜單條
Menu:菜單
MenuIiem:菜單項
關係:MenuBar可以添加Menu,Menu可以添加MenuItem
十五,jar包雙擊執行
1,命令:
jar -cvfm jar包的名稱 配置文件 要打包的文件名(.class文件所有的包名 )
2,步驟:
1,新建立一個.txt文件在文件內寫入你要運行的類名:Main-Class:空格 包名.類型(一定要回車固定格式)保存
2,使用命令進行打包。
注:沒有空格會發生IOException提示如下:
F:\javaDocument>jar -cvfm fileOperate.jar main.txt fileOpen
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:410)
at java.util.jar.Manifest.read(Manifest.java:199)
at java.util.jar.Manifest.<init>(Manifest.java:69)
at sun.tools.jar.Main.run(Main.java:172)
at sun.tools.jar.Main.main(Main.java:1177)
如果沒有回車,,配置文件是無法加載進行去的,jar包無法雙擊執行
如果打不開可能是文件沒有進行關聯,wind7中jar文件的關聯請參考:http://bbs.csdn.net/topics/350020409