淺談-java GUI-基礎理論

来源:https://www.cnblogs.com/e-link/archive/2022/08/31/16643996.html
-Advertisement-
Play Games

GUI:Graphical User Interface(圖形用戶介面) 用圖形的方式,用來顯示電腦操作的界面 Java為GUI提供的API都存在java.awt和javax.Swing兩個包中 java.awt 包: awt是這三個單詞首字母的縮寫,翻譯過來是抽象視窗工具包,只不過這個包的API ...


GUI:Graphical User Interface(圖形用戶介面) 用圖形的方式,用來顯示電腦操作的界面

Java為GUI提供的API都存在java.awt和javax.Swing兩個包中

  • java.awt 包:

    awt是這三個單詞首字母的縮寫,翻譯過來是抽象視窗工具包,只不過這個包的API,需要調用本地系 統方法實現功能,和本地系統有關聯,不利於代碼移植,屬重量級控制項

  • javax.swing 包:

    它是在awt的基礎上,建立的一套圖形界面系統,提供了更多的組件,而且完全由Java實現。增強了移 植性,屬輕量級控制項 所以,我們做圖形界面開發使用的是swing包下的類。

  • 這裡出現了一個名詞:組件。

    組件是具有圖形表示的對象,該圖形表示可以顯示在屏幕上並且可以與用戶交互 比如說,在用戶登錄中,文本框和按鈕等,都是能夠表示圖形的對象,所以它們都稱為組件。 最後,我們來說一下,我們會用到的常用組件

img

組件:

  • 基本組件:具有圖形表示的對象

  • 容器組件:是可以添加組件的組件。也就是在容器中可以通過add方法添加組件,既可以添加基本組件,也可 以添加容器組件。

  1. JButton,這是按鈕

  2. JLabel,這是用來顯示文本內容的,或者展示圖片使用

  3. JTextFile,這是文本框,用來輸入內容的

  4. JTextArea,這是文本域,用來輸入多行多列的數據的

接著,我們再來看容器組件:

面板也是一個容器,我們常用JPanel,後面用到在具體講解 窗體,下麵是Frame,這是awt包下,而我們使用的是JFrame,這是swing包下。 好了,GUI相關的基礎知識我們就先講到這裡

初識窗體

JFrame:窗體(頂層窗體)

JFrame(); ---> 構造一個不可見的窗體

JFrame類的構造方法

構造方法 功能說明
public JFrame() 創建一個沒有視窗標題的視窗框架
public JFrame(String title) 創建一個視窗標題為title的視窗框架

JFrame成員方法

方法 功能說明
public void setTitle(String title) 設置或修改框架的標題
public String getTitle() 返回框架的標題
public void setBackground(Color c) 設置框架的背景顏色
public MenuBar getMenuBar() 返回視窗中的菜單對象
public void setMenuBar(MenuBar mb) 設置視窗的菜單條
public void remove(MenuComponent mc) 從視窗刪除給定的菜單項
public boolean isResizable() 判斷視窗是否可以調節大小
public void setVisible(boolean b) 顯示或隱藏窗體(取決於b的值-true為顯示,-false為隱藏)
public void setLocationRelativeTo(component c) 設置窗體位置,null為屏幕中央
public void setAlawysOnTop(boolean c) 設置此視窗是否終究位於其他視窗之上
public void setDefaultCloseoperation(int operation) 設置窗體關閉時預設操作,3--為關閉時退出程式

窗體添加按鈕

JButton(); 構造方法

JButton(String text); 創建一個帶文本的按鈕

JButton() 成員方法

void setSize(int w, int h); 設置按鈕的寬高大小
void setLocation(int x, int y); 設置按鈕的坐標
void setBounds(int x, int y, int w, int h); 上面兩個方法的結合

和窗體相關操作

窗體對象.setLayout(null);------------> 取消窗體預設佈局

**
**

窗體對象.add(按鈕對象名) ------------------>把按鈕加入窗體中

JLabel();顯示文本或圖像類

構造方法:

JLabel(String text); 創建指定的文本

添加圖片時,不能直接加路徑,直接使用字元串路徑會識別成text文本


需要使用-----ImageIcon(String filename); 的構造方法

例子:

ImageIcon img = new ImageIcon("D\\img\\demo.png"); // 使用轉義符\定義完整路徑

JLabel jl = new JLabel(img);   // 將圖片加入

成員方法:

與其按鈕的成員方法

void setBounds(int x, int y, int width, int height):設置位置和大小

JTextField(); 文本輸入框

構造方法

JTextField(String text); 文本輸入框,有文本預設在輸入框里顯示

JPassowrdFIeld();密碼輸入框

構造方法:

JPassowrdFIeld(String text); 密碼輸入框,有文本預設在輸入框里顯示

成員方法

void getText(); 獲取輸入框文本內容

監聽事件AcationEvent();

  1. 事件源:事件發生的地方。可以是按鈕,窗體,圖片等

  2. 事件:發生了什麼事情。例如:滑鼠點擊事件,鍵盤按下事件等 事件綁定:把事件綁定到事件源上,當發生了某個事件,則觸發對應的處理邏輯 事件源對象. addXXXListener(事件);

ActionEvent();構造方法----用於傳遞事件,為組件使用的addActionListener();方法接受此類事件的addActionListener()對象


要添加事件的對象名.addActionListener(new ActionListener() { // 這裡使用的為匿名類寫法

​                @override

​                public void cationPerformed(ActionEvent e){  // 重寫該方法, 

​                      事件觸發代碼

​    
​                      }

});

低級事件

低級事件是指基於組件和容器的事件,當一個組件上發生特定動作,則觸發了低級(組件)事件。

(1)ComponentEvent組件事件:組件尺寸變化、移動。

(2)ContainerEvent容器事件: 組件增加、移動。

(3)WindowEvent視窗事件: 包括用戶點擊了關閉按鈕,視窗得到與失去焦點,視窗最小化等。

(4)FocusEvent焦點事件: 焦點的獲得和丟失。

(5)KeyEvent鍵盤事件: 鍵按下、釋放。

(6)MouseEvent滑鼠事件: 包括滑鼠按下,滑鼠釋放,滑鼠點擊等。

這裡不一一列舉了

高級事件(語義事件)

高級事件可以不和特定的動作相關聯,該類事件具有一般性,取決於觸發此事件的含義。

(1)ActionEvent動作事件:對應一個動作事件,它不代表一個特定的動作,而是一種一般性動作(語義)。如按鈕按下、JTextField中按Enter鍵。

(2)AdjustmentEvent調節事件:在滾動條上移動滑塊以調節數值。

(3)ItemEvent項目事件:選擇項目,不選擇“項目改變”。

(4)TextEvent文本事件:文本對象改變。

常用事件處理類

常用組件事件類主要包括:

  • 操作事件類ActionEvent

  • 選項事件類ItemEvent

  • 文本事件類TextEvent

  • 視窗事件類WindowEvent

  • 滑鼠事件類MouseEvent

  • 按鍵事件類KeyEvent

事件處理類

事件源 產生事件的類類型
Button ActionEvent
Checkbox ActionEvent、ItemEvent
Component ComponentEvent、FocusEvent、KeyEvent、MouseEvent
MenuItem ActionEvent
Scrollbar AdjustmentEvent
TextField ActionEvent
TextArea ActionEvent
Window WindowEvent

img

更多的部分可以參考java手冊


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 若依前後端分離項目中,提交含有qutil富文本控制項數據的表單,後端接收到的富文本數據,缺少了部分html標簽。 ...
  • YSLaunchar-a1.0 模型 基本介紹 本文不考慮所有具體的實現方法,之後會有更完整第二版發出 該程式計劃使用 julia 語言編寫,目前版本(1.7)並不包含類(class),取而代之,我會使用 julia 提供的兩種結構體完成。 考慮了很久,我將會把所有版本,玩家列表使用字典的形式。 主 ...
  • 目錄 一.OpenGL 圖像曝光度調節 1.原始圖片 2.效果演示 二.OpenGL 圖像曝光度調節源碼下載 三.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學 ...
  • 1、定製報告常用的裝飾器 結合表和示例圖查看 | 使用方法 | 參數值 | 參數說明 | | | | | | @allure.epic() | 項目名稱 | 項目名稱,樹結構第一層 | | @allure.feature() | 模塊名稱 | 模塊名稱,樹結構第二層 | | @allure.stor ...
  • 《Python極客項目編程 》中文PDF完整版免費下載地址 ↑ ↑ ↑ ↑ ↑ ↑ ↑ 點擊即可下載 內容簡介 · · · · · · Python 是一種強大的編程語言,容易學習而且充滿樂趣。但掌握了基本知識後,接下來做什麼? 本書通過14個有趣的項目,幫助和鼓勵讀者探索Python編程的世界。 ...
  • 序言 哈嘍兄弟們,今天咱們來瞭解一下 fileinput 。 說到fileinput,可能90%的碼農表示沒用過,甚至沒有聽說過。 這不奇怪,因為在python界,既然open可以走天下,何必要fileinput呢? 但是,今天我還是要介紹fileinput這個方法,因為太奈斯了。 不止是香。是真香 ...
  • 函數是組織代碼的非常有效的方式,有了函數,我們就可以編寫大規模的項目。可以說,函數是組織代碼的最小單元。 Python函數的定義 函數是代碼封裝的一種手段,函數中包含一段可以重覆執行的代碼,在需要用到這些代碼時,只需要調用函數,就會運行函數中的代碼。 python 函數這麼定義: def 函數名稱( ...
  • 創作不易,感謝支持! fopen函數 頭文件:stdio.h 功能是打開一個文件,其聲明格式是: FILE *fopen(const char *filename, const char *mode); 文件指針名 = fopen(文件名,使用文件方式) “文件名”是被打開文件的文件名,類型是C風格 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...