【java學習】GUI 圖形程式設計
1,相關外掛
對於新手來說,不要在一開始使用此類外掛。當你能自己寫出來程式碼的時候,才是使用此類外掛的時候,為了加快開發效率。加油!
1)eclipse windowbuilder視覺化設計介面
①安裝
登陸網址:http://eclipse.org/windowbuilder/download.php
選擇版本->【link】
eclipse中:【help】->【Install New Software】安裝。
重啟eclipse
②使用
【New】->【Other】 選擇【WindowBuilder】->【Swing Designer】->【Application Window】 即可建立視覺化設計。
2,AWT(Abstract Window Toolkit,抽象視窗工具包)
1)概念
java.aw。
該包提供了一套與本地圖形介面進行互動的介面,是Java提供的用來建立和設定Java的圖形使用者介面的基本工具。AWT中的圖形函式與作業系統所提供的圖形函式之間有著一一對應的關係,稱之為peers,當利用AWT編寫圖形使用者介面時,實際上是在利用本地作業系統所提供的圖形庫。由於不同 作業系統的圖形庫所提供的樣式和功能是不一樣的,在一個平臺上存在的功能在另一個平臺上則可能不存在。為了實現Java語言所宣稱的“一次編寫,到處執行(write once, run anywhere)”的概念,AWT不得不通過犧牲功能來實現平臺無關性,也即AWT所提供的圖形功能是各種作業系統所提供的圖形功能的交集。
2)Frame(框架)
用於描述頂層視窗。
3)AWT中的物件
Component類:是一個具有圖形表示能力的物件,可在螢幕上顯示,並可與使用者進行互動。典型圖形使用者介面中的按鈕(Button)、複選框、和滾動條都是元件示例。
Container類:可以包含其他AWT元件的元件(Frame)。
3,Swing(使用者介面開發工具包)
1)概念
javax.swing。
基於AWT架構之上,使跨平臺應用程式可以使用任何可插拔的外觀風格。Swing開發人員只用很少的程式碼就可以利用Swing豐富、靈活的功能和模組化元件來建立優雅的使用者介面。 工具包中所有的包都是以swing作為名稱,例如javax.swing,javax.swing.event。
優點:
- swing擁有一個豐富、便捷的使用者介面元素集合。
- swing對平臺的依賴很小,意味著他有很少的關於平臺的bug。swing對平臺的依賴很小,意味著他有很少的關於平臺的bug。
- 給予使用者一致的感覺。給予使用者一致的感覺。
注意:
- swing類位於javax.swing包中。包名錶示這是Java的一個擴充套件包。不過在1.2版本後,每個Javase實現中都必須包含他。
- 所有的swing元件都必須由事件分派執行緒(Event dispatch thread)進行配置,執行緒將按鍵控制和滑鼠點選轉移到使用者介面元件中。但是許多swing程式並沒有這麼做,而是直接在主程式中完成初始化。由於swing 元件很複雜,jdk程式設計師不能保證這種方式的安全性 ,為了以防萬一,這是最好的選擇。
2)JFrame
擴充套件於Frame類,是極少數幾個不繪製在畫布上的Swing元件之一。因此它的修飾部件(按鈕、標題欄、圖示等)由使用者的視窗系統繪製,而不是由Swing繪製。
①定義一個框架類:
class SimpleFrame extends JFrame{
public SimpleFrame(){
setSize(300,200);
} // 設定框架大小,如果沒有明確地指定框架的大小,所有框架的預設值為0*0。
}
例項框架物件:
SimpleFrame frame = new SimpleFrame();
②常用方法
JFrame類的常用方法 | 型別 | 描述 |
---|---|---|
JFrame() | 構造方法 | 建立一個普通的窗體物件 |
JFrame(String a) | 構造方法 | 建立一個窗體物件,並指定標題 |
setSize(int width,int height) | 普通方法 | 設定窗體大小 |
setBackgorund(color.red) | 普通方法 | 設定窗體背景顏色 |
setLocation(int x,int y) | 普通方法 | 設定元件的顯示位置 |
setLocation(point p) | 普通方法 | 通過point來設定元件的顯示位置 |
setBounds(Rectangle r) | 移動元件並調整其大小,使其符合新的有界矩形 r。由 r.x 和 r.y 指定元件的新位置,由 r.width 和 r.height 指定元件的新大小 | |
setVisible(true/false) | 普通方法 | 顯示或隱藏元件 |
add(Component comp) | 普通方法 | 向容器中增加元件(Java SE5.0) |
setLayout(LayoutManager mgr) | 普通方法 | 設定區域性管理器,如果設定為null表示不使用 |
pack() | 普通方法 | 調整視窗大小,以適合其子元件的首選大小和區域性 |
getContentpane() | 普通方法 | 返回此視窗的容器物件 |
setIconImage | 用於告訴視窗系統在標題欄、任務切換視窗等位置顯示哪個圖示,對應getIconImage() | |
setTitle(String s) | 用於改變標題欄的文字。對應方法getTitle() | |
setResizable(boolean b) | 框架的大小是否允許使用者改變。 | |
dispose() | 只關閉了當前窗體 | |
System.exit(0) | 退出所有程式 |
3)常用控制元件
①JButton
②JLabel 標籤
③輸入框
JEditorPane
多行編輯文字框。
JTextPane
是JEditorPane的子類,支援styled text,相當於富文字框,可以插入圖片,html程式碼等。
JTextField
允許編輯單行文字。
JTextArea
只支援unstyled text,可編輯的。
方法 | 描述 |
---|---|
setEditable(boolean b) | 是否可編輯 |
④JTextArea 多行文字區域
顯示純文字的多行區域。
方法 | 描述 |
---|---|
JTextArea() | 建立一個內容為空的文字區 |
JTextArea(Document doc) | 建立具有指定文件的文字區 |
JTextArea(Document doc,String text,int rows,int columns) | 建立具有指定文件,行數,列數的文字區 |
JTextArea(int rows,int columns) | 指定行數,列數的文字區 |
JTextArea(String text) | 指定文字內容的文字區 |
JTextArea(String text,int rows,int columns) | 指定文字內容和行數,列數的文字區 |
public void append(String str) | 將給定文字追加到文件結尾。 |
boolean getLineWrap() | 獲取文字區的換行策略。 |
public int getRows() | 返回 TextArea 中的行數。 |
public boolean getWrapStyleWord() | 獲取換行方式(如果文字區要換行)。 |
public void setWrapStyleWord(boolean word) | 設定換行方式(如果文字區要換行) |
public void insert(String str, int pos) | 將指定文字插入指定位置。 |
public void setColumns(int columns) | 設定此 TextArea 中的列數。 |
public void setFont(Font f) | 設定當前字型。 |
public void setLineWrap(boolean wrap) | 設定文字區的換行策略。 |
public void setRows(int rows) | 設定此 TextArea 的行數。 |
public void setEditable(boolean b) | 設定文字區的編輯狀態。引數為true表示可編輯狀態,為false則表示不可編輯狀態 |
將JTextArea放入JScrollPane中,這樣就能利用滾動的效果看到輸入超過JTextArea高度的文字。
⑤ JScrollPane 滾動條
方法 | 描述 |
---|---|
JscrollPane() | 建立一個滾動條,水平和垂直都可以顯示 |
JscrollPane(Component view) | 建立一個顯示指定元件內容的滾動條,當元件的內容超過檢視大小就會顯示水平和垂直的的滾動條 |
JscrollPane(Component view,int vsbPolicy,int hsbPolicy) | 建立一個顯示指定元件內容的滾動條,且有指定滾動策略的滾動條 |
JscrollPane(int vsbPolicy,int hsbPolicy) | 建立一個有指定滾動策略的滾動條 |
public int getHorizontalScrollBarPolicy () | 獲取水平滾動策略值 |
public int getVerticalScrollBarPolicy() | 獲取垂直滾動策略值 |
public void getHorizontalScrollBarPolicy () | 設定水平滾動策略值 |
public void getVerticalScrollBarPolicy() | 設定垂直滾動策略值 |
public boolean isWheelScrollingEnabled() | 設定是否進行滾動以響應滑鼠滾輪 |
public void setViewportView(Conponent view) | 設定滾動條中的滾動元件 |
public void setWheelScrollingEnabled(boolean handleWheel) | 啟動/禁用對滑鼠滾輪滾動的移動響應 |
⑥JPanel
一個JPanel 類往往是用來承載其他控制元件的,其主要作用是為其他的控制元件提供空間作為支撐,且可以在屬性中設定其背景色。需要設定佈局Layout.
BorderLayout (邊界佈局)
容器劃分為東、西、南、北、中五個區域,每個區域只能放置一個元件。
GridLayout (網格佈局)
容器的空間劃分成M×N列的網格區域, 每個區域只能放置一個元件。
FlowLayout (預設佈局,流式佈局)
元件按照加入的先後順序按照設定的對齊方式從左向右排列,一行排滿到下一行開始繼續排列。
屬性設定
jp.setPreferredSize(new Dimension(300, 150));//設定JPanel的大小
jp.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); //設定邊距
⑦彈框
JOptionPane.showMessageDialog(null, "訊息不能為空");
4,建立圖形化介面
1)步驟
1、建立Frame窗體。
2、對窗體進行基本設定,如大小,位置,佈局。
3、定義元件。
4、將元件通過窗體的add方法新增到窗體中。
5、讓窗體顯示,通過setVisible(true)。