黑馬程序員-第二十五天(GUI)

---------------------- 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

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------
發佈了48 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章