GUI(圖形用戶界面)

来源:http://www.cnblogs.com/justdoitba/archive/2017/07/10/7143888.html
-Advertisement-
Play Games

AWT概述 GUI全稱是Graphical User Interface,即圖形用戶界面,即應用程式提供給用戶操作的圖形界面,包括視窗、菜單、按鈕、工具欄和其它各種圖形界面元素 GUI設計提供了豐富的類庫,這些類分別位於java.awt和javax.swing包中,簡稱為AWT和Swing Swin ...


AWT概述

  GUI全稱是Graphical User Interface,即圖形用戶界面,即應用程式提供給用戶操作的圖形界面,包括視窗、菜單、按鈕、工具欄和其它各種圖形界面元素

  GUI設計提供了豐富的類庫,這些類分別位於java.awt和javax.swing包中,簡稱為AWT和Swing
  Swing不僅實現了AWT中的所有功能,而且提供了更加豐富的組件和功能,足以滿足GUI設計的一切需求。

AWT事件處理
事件處理機制
  事件處理機制專門用於響應用戶的操作,比如,想要響應用戶的點擊滑鼠、按下鍵盤等操作,就需要使用AWT的事件處理機制

常用事件分類
窗體事件
  WindowEvent用於表示這些窗體事件,在應用程式中,當對窗體事件進行處理時,首先需要定義一個類實現WindowListener介面作為窗體監聽器,然後通過addWindowListener()方法將窗體對象與窗體監聽器綁定

滑鼠事件
  MouseEvent類用於表示滑鼠事件,幾乎所有的組件都可以產生滑鼠事件,滑鼠事件包括滑鼠按下、滑鼠鬆開、滑鼠單擊等。
對滑鼠事件的處理可通過實現MouseListener介面或者繼承適配器MouseAdapter類,然後調用addMouseListener()方法將監聽器綁定到事件源對象

鍵盤事件
  鍵盤操作也是最常用的用戶交互方式,例如鍵盤按下、釋放等,這些操作被定義為鍵盤事件
KeyEvent類表示鍵盤事件,處理KeyEvent事件的監聽器對象需要實現KeyListener介面或者繼承KeyAdapter類。

動作事件
  在Java中,動作事件用ActionEvent類表示,處理ActionEvent事件的監聽器對象需要實現ActionListener介面,但監聽器對象在監聽動作時,不會像滑鼠事件一樣處理滑鼠個別的移動和單擊的細節,而是去處理“按鈕按下”這樣“有意義”的事件。

佈局管理器
FlowLayout流式佈局管理器
  使用FlowLayout佈局管理器時,容器會將組件按照添加順序從左向右放置。當到達容器的邊界時,會自動將組件放到下一行的開始位置。這些組件可以左對齊、居中對齊(預設方式)或右對齊的方式排列

BorderLayout邊界佈局管理器
  是一種較為複雜的佈局方式,它將容器劃分為五個區域,分別是東(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。組件可以被放置在這五個區域的中任意一個。

GridLayout網格佈局管理器
  使用縱橫線將容器分成n行m列大小相等的網格,每個網格中放置一個組件。

GridBagLayout網格包佈局管理器
  與GridLayout佈局管理器類似,不同的是,它允許網格中的組件大小各不相同,而且允許一個組件跨越一個或者多個網格。

CardLayout卡式佈局管理器
  將界面看做一系列卡片,在任何時候只有其中一張卡片是可見的,這張卡片占據容器的整個區域。

BoxLayout盒子佈局管理器

不使用佈局管理器
  如果不希望通過佈局管理器對容器進行佈局,可以調用容器的setLayout(null)方法,將佈局管理器取消。
不使用佈局管理器時,程式必須調用容器中每個組件的setSize()和setLocation()方法或者是setBounds()方法(這個方法接收四個參數,分別是左上角的x、y坐標和組件的長、寬)來為這些組件在容器中定位

Swing


編程理念

MVC模式
  模型M(數據)和視圖V(顯示)分離,通過控制器C將二者鬆散耦合在一起
  觀察者模式
  迪米特法則

監聽器(介面回調)
  匿名內部類(就地實例化介面對象)
  視窗類實現監聽器介面並重寫回調方法
  內部類實現監聽器介面並重寫回調方法
  創建內部類對象作為一個或多個控制項的監聽器
  內部類可以訪問外部類的私有成員(控制項)

預設適配器
  MouseListener / MouseMotionListener / MouseWheelListener
  MouseAdapter

  KeyListener
  KeyAdapter

  WindowListener
  WindowAdapter

視窗
JFrame
  JFrame和Frame一樣是一個獨立存在的頂級視窗,不能放置在其它容器之中,JFrame支持通用視窗所有的基本功能,例如視窗最小化、設定視窗大小等等

JDialog
  JDialog是Swing的另外一個頂級視窗,它和Dialog一樣都表示對話框
  JDialog對話框可分為兩種:模態對話框和非模態對話框。
非模態對話框
  允許用戶在處理對話框的同時與其它視窗交互
模態對話框
  指用戶需要等到處理完對話框後才能繼續與其它視窗交互

JInternalFrame多文檔視窗(子視窗)
JWindow無邊框的視窗

中間容器

JPanel
  和AWT中的Panel組件使方法基本一致,它是一個無邊框,不能被移動、放大、縮小或者關閉的面板,它的預設佈局管理器是FlowLayout。當然也可以使用構造函數JPanel(LayoutManager layout)或者它的setLayout()方法為其制定佈局管理器。

JScrollPane帶滾動條
  帶有滾動條的面板容器,而且這個面板只能添加一個組件,如果想往JScrollPane面板中添加多個組件,應該先將組件添加到JPanel中,然後將JPanel添加到JScrollPane中

JSplitPane帶分割條
  JTabbedPane帶頁簽(選項卡)
  JDesktopPane可以放子視窗

文本組件
  用於接收用戶輸入的信息或向用戶展示信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它們都有一個共同父類      JTextComponent,JTextComponent是一個抽象類,它提供了文本組件常用的方法

  JTextComponent 類有兩個子類,分別是JTextField和JTextArea
  JTextField:稱為文本框,它只能接收單行文本的輸入
  JTextArea:JTextArea稱為文本域,它能接收多行的文本的輸入

按鈕組件
  常見的按鈕組件有JButton、JCheckBox、JRadioButton等,它們都是抽象類AbstractButton類的直接或間接子類

JCheckBox組件被稱為覆選框,它有選中(是)/未選中(非)兩種狀態,如果用戶想接收的輸入只有“是”和“非”,則可以通過覆選框來切換狀態。如果覆選框有多個,則用戶可以選中其中一個或者多個。

JRadioButton組件被稱為單選按鈕,與JCheckBox覆選框不同的是,單選按鈕只能選中一個,就像收音機上的電臺選擇按鈕,當按下一個,先前按下的按鈕就會自動彈起,對於JRadioButton按鈕來說,當一個按鈕被選中時,先前被選中的按鈕就會自動取消選中。

JComboBox
  被稱為組合框或者下拉列表框,它將所有選項摺疊收藏在一起,預設顯示的是第一個添加的選項。當用戶點擊組合框時,會出現下拉式的選擇列表,用戶可以從中選擇其中一項並顯示。

菜單組件
  菜單組件分為下拉式菜單和彈出式菜單
下拉式菜單包括JMenuBar(菜單欄)、JMenu(菜單)和JMenuItem(菜單項)

  JMenuBar:表示一個水平的菜單欄,它用來管理菜單,不參與同用戶的互動式操作。
  JMenu:表示一個菜單,它用來整合管理菜單項。菜單可以是單一層次的結構,也可以是多層次的結構。
  JMenuItem:JMenuItem表示一個菜單項,它是菜單系統中最基本的組件。和JMenu菜單一樣,在創建JMenuItem菜單項時,通常會使用  JMenumItem(String text)這個構造方法為菜單項指定文本內容

創建下拉式菜單的步驟如下所示:
1、創建一個JMenuBar菜單欄對象,將其放置在JFrame視窗的頂部
2、創建JMenu菜單對象,將其添加到JMenuBar菜單欄中
3、創建JMenuItem菜單項,將其添加到JMenu菜單中

在Java的Swing組件中,彈出式菜單用JPopupMenu表示
JPopupMenu彈出式菜單和下拉式菜單一樣都通過調用add()方法添加JMenuItem菜單項,但它預設是不可見的,如果想要顯示出來,則必須調用它的show(Component invoker,int x,int y)方法

常用控制項

 基本控制項
  JLabel標簽
  Icon
  Font
  JButton按鈕
  JTextField文本框
  JPasswordField密碼框
  JRadioButton單選按鈕ButtonGroup
  JCheckBox覆選框
  JCombBox下拉列表ListCellRender
  JList列表ListCellRender
  JTextArea文本域
  JOptionPane彈出式模態對話框
  JFileChooser文件選擇器
  JColorChooser顏色選擇器
 高級控制項
  JMenu菜單JMenuItem菜單項
  JPopupMenu上下文菜單(右鍵菜單)JMenuItem菜單項
  JToolBar工具欄
  JEditorPane編輯面板
  JProgressBar進度條
  JSlider滑動條
  JSpinner微調器
  JTable表格TableCellRender
  JTree樹TreeCellRender

AWT繪圖
  update(Graphics g)
  repaint()
  paint(Graphics g)

Swing繪圖
  paintComponent(Graphics g)
  paintBorder(Graphics g)
  paintChildren(Graphics g)


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

-Advertisement-
Play Games
更多相關文章
  • 這個vue實現備忘錄的功能demo是K在github上找到的,K覺得這是一個用來對vue.js入門的一個非常簡單的demo,所以拿在這裡共用一下。 (尊重他人勞動成果,從小事做起~ demo原github地址:https://github.com/vuejs/vue) 一、實現效果 二、代碼展示 ...
  • 今天編程時,JavaScript 程式報了這樣的錯誤:Cannot use 'in' operator to search for...,具體錯誤信息如下: 坦白說,這樣的錯誤最難調試。因為它並不指向你所寫的具體代碼,而是泛泛指向了 lib.js 文件(該文件通常是第三方的打包壓縮庫),你幾乎無法依 ...
  • 一、http方法 二、http常用狀態碼 1. 100~199信息狀態碼 2. 200~299成功狀態碼 3. 300 ~ 399重定向狀態碼 4. 400~499錯誤狀態碼 5. 500~599狀態碼 ...
  • 剛開始做NDK 開發的時候,Android Studio 還沒提供了 native C/C++ 設置斷點 調試,我們都是通過輸出 日誌來調試,這樣費時耗力。Android Studio 應該是在 2.2 版本才提供的設置斷點 debug 功能,同時在該版本也提供了 cmake 編譯。 我目前在做 N ...
  • 傳統機器學習依賴良好的特征工程。深度學習解決有效特征難人工提取問題。無監督學習,不需要標註數據,學習數據內容組織形式,提取頻繁出現特征,逐層抽象,從簡單到複雜,從微觀到巨集觀。 稀疏編碼(Sparse Coding),基本結構組合。自編碼器(AutoEncoder),用自身高階特征編碼自己。期望輸入/ ...
  • 換了四種黑蘋果,最終成功了 步驟: 1、升級vs2017, 2、安裝XCODE 8.3 3、安裝vs2017 for mac 企業版 4、啟動vs2017 for mac ,設置xcode 位置 5、打開遠程登錄與屏幕共用 6、打開WINDOWS中的VS2017,在 選項中設置XCODE位置,使用I... ...
  • 詮釋: 1. 破解VIP登陸限制 2.去後門 (自查) 下載地址 :https://pan.baidu.com/s/1eR2rUOM 查毒地址:http://a.virscan.org/a3983f36d31d08a51486501965d04cb5 Xise_V20.0.exe 更新日誌 生成內頁 ...
  • 一、進程、線程及多線程的概念 什麼是多線程呢?不理解。 那什麼是線程呢?說到線程就不得不說說進程。我在網上搜索也搜索了一些資料,大部分所說的進程其實是很抽象的東西。通俗的來講,進程就是一個應用程式開始運行,那麼這個應用程式就會存在一個屬於這個應用程式的進程。 那麼線程就是進程中的基本執行單元,每個進 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...