第58節:Java中的圖形介面程式設計-GUI
歡迎到我的簡書檢視我的文集
前言:
GUI
是圖形使用者介面,在Java
中,圖形使用者介面我們用GUI
表示,而GUI
的完整英文為: Graphical User Interface
(圖形使用者介面), 所謂圖形使用者介面就是以圖形的方式來顯示你計算機的操作介面, 我們計算機中操作的介面就是 我們Java
中常說的圖形使用者介面, 這樣的操作簡單明瞭.
CLI
的英文為Command Line User Interface
, 是命令列使用者介面, 命令列, 這就是我們程式設計師常常熟悉的, 常見的Dos
命令列操作, 這些常用命令式需要記住的, CLI
的操作就不那麼直觀了.
在Java
GUI
提供了物件在 java.awt
和 javax.swing
兩個包中
在早年中, Java.awt為抽象視窗工具包, 英文為 Abstract Window ToolKit
, 需要呼叫本地的系統方法來實現功能需求,屬於重量級的控制元件.
而在awt
的基礎上,建立了一套圖形介面系統, 從而提供了更多的元件, 而且完全是由Java實現的, 增強了移植性, 屬於輕量級的控制元件. 有自己的顯示效果, 顯示自己的形狀, 平臺要求低了, 輕量級和體統嵌入的比較淺.
繼承關係
Button
按鈕,Label
標籤,Checkbox
複選框,TextComponent
文字元件,TextArea
TextField
文字框.
元件裡面還能放入元件,在Java中我們叫容器.
window
窗體, Panel
面板
Frame
小視窗,Dialog
對話方塊,FileDialog
檔案對話方塊
GUI
佈局
Flow
流式佈局
掃雷的格式佈局
佈局管理
常見的佈局管理器:
流式佈局管理: FlowLayout
, 是從左到右的排列, 是Panel
預設的佈局管理.
邊界佈局: 東南西北,中, 是Frame
預設的佈局管理
網格佈局管理: GridLayout
卡片佈局管理: CardLayout
網格包佈局管理: GridBagLayout
GUI
簡單的小窗體
java.awt
包含用於建立使用者介面和繪製圖形影象的所有類.
java.awt
類 Component
java.lang.Object
-> java.awt.Component
所有已實現的介面:
ImageObserver, MenuContainer, Serializable
component
是一個具有圖形表示能力的物件.
java.awt
類 Frame
java.lang.Object
-> java.awt.Component
-> java.awt Container
-> java.awt.Window
-> java.awt.Frame
實現的介面:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知的子類:
JFrame
Frame
是帶有標題和邊框的頂層視窗.
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class FrameDemo {
public static void main(String[] args) {
//1,建立一個窗體。Frame
Frame f = new Frame("my frame");
//2, 對窗體進行基本設定。
f.setSize(500, 400);
f.setLocation(400, 200);
//設定佈局。
f.setLayout(new FlowLayout());
//給窗體新增元件。
Button but = new Button("my button");
//加入一個文字框元件。
TextField tf = new TextField(40);
//將元件新增到窗體中。
f.add(tf);
f.add(but);
//1,在按鈕上新增所需的監聽器。
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按鈕被觸發了....."+e);
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("window closing");
System.exit(0);
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("孔雀開屏!window open");
}
});
but.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
System.out.println("mouse double click");
}
}
});
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
//1,如何獲取錄入的內容。通過鍵盤事件物件獲取。
// char key = e.getKeyChar();
// int code = e.getKeyCode();
// System.out.println(code+"...."+KeyEvent.getKeyText(code));
// int code = e.getKeyCode();
// if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
// System.out.println("必須是0-9數字");
// e.consume();//直接取消預設處理方式。
// }
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("ctrl+enter run");
}
}
});
//3,讓窗體顯示。
f.setVisible(true);
System.out.println("over");
}
}
事件監聽機制
- 事件源-元件
- 事件 -
Event
- 監聽器 -
Listener
- 事件處理
Button
java.awt
classButton
java.lang.Object
-> java.awt.Component
-> java.awt.Button
監聽事件:
addActionListener(ActionListener l)
新增指定的動作偵聽器以從此按鈕接收動作事件。
MouseListener
public interface MouseListener extends EventListener
用於在元件上接收“有趣”滑鼠事件(按,釋放,單擊,輸入和退出)的偵聽器介面。
方法的詳細資訊:
mouseClicked
void mouseClicked(MouseEvent e)
在元件上單擊滑鼠按鈕時呼叫
mousePressed
void mousePressed(MouseEvent e)
在元件上按下滑鼠時呼叫
mouseReleased
void mouseReleased(MouseEvent e)
在元件上釋放滑鼠時呼叫
mouseEntered
void mouseEntered(MouseEvent e)
當滑鼠進入元件時呼叫
mouseExited
void mouseExited(MouseEvent e)
當滑鼠退出元件時呼叫
圖形化介面的工具
//1,獲取路徑。通過文字框物件完成。
String str_dir = jTextField1.getText();
//2,將字串路徑封裝成File物件。
File dir = new File(str_dir);
//判斷。
if(dir.exists()&&dir.isDirectory()){
//清空文字區域。
jTextArea1.setText("");
//3,獲取檔名稱列表。
String[] names = dir.list();
for(String name :names){
//4,將名字顯示到文字區域。
jTextArea1.append(name+LINE_SEPARATOR);
}
}
public class JFileChooser extends JComponent implements Accessible
事件監聽機制流程:
- 監聽器 - 將監聽器註冊到事件源
- 事件源 - 元件 (外部動作)
- 產生事件物件 - 將事件物件傳給事件處理方式
選單繼承
MenuComponent
MenuBar,MenuItem,Menu
達叔小生:往後餘生,唯獨有你
You and me, we are family !
90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動並且善於溝通
簡書部落格: 達叔小生
https://www.jianshu.com/u/c785ece603d1
結語
- 下面我將繼續對 其他知識 深入講解 ,有興趣可以繼續關注
- 小禮物走一走 or 點贊