Java基礎-組件及事件處理(上)

(創作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡)

目錄

Swing

概述

MVC 架構

Swing 特點

控件

SWING UI 元素

JFrame

SWING 容器

說明?

常用方法

示例:

JDialog

說明

常用方法

重點內容

示例:


Swing

概述

Swing API 是一組可擴展的 GUI 組件,用來創建基于 JAVA 的前端/ GUI 應用程序。它是建立在 AWT API 之上,并且作為 AWT API 的替代者,因為它的幾乎每一個控件都對應 AWT 控件。 Swing 組件遵循模型 - 視圖 - 控制器架構來滿足下面的準則。

  • 一個單一的 API 足夠支持多種外觀和風格。

  • API 是模擬驅動的,這樣最高層級的 API 不需要有數據。

  • API 是使用 Java Bean 模式的,這樣 Builder Tools 和 IDE 可以為開發者提供更好的服務來使用它。

MVC 架構

Swing API 架構用下列的方式來遵循基于松散的 MVC 架構。

  • 模型表示組件的數據。

  • 視圖表示組件數據的可視化表示形式。

  • 控制器接受用戶在視圖上的輸入,并且在組件的數據上反映變化。

  • Swing 組件把模型作為一個單獨的元素,并且把視圖和控制器部分組合成用戶界面的元素。使用這種方式,Swing 具有可插拔的外觀與風格架構。

Swing 特點

  • 輕量級 ——?Swing 組件是獨立的本地操作系統的 API,因為 Swing API 控件通常采用純 JAVA 代碼而不是采用底層的操作系統調用來呈現。

  • 豐富的控件 ——?Swing 提供了一組豐富的先進的控件,如樹,頁簽窗體,滑動條,顏色選擇器,表格控件

  • 高級自定義 ——?Swing 控件可以用非常簡單的方法來自定義,因為可視化外觀是獨立于內部表示的。

  • 可插拔的外觀和風格 ——?基于 Swing 的 GUI 應用程序的外觀和風格可以在運行時根據有效的值改變。

控件

每個用戶界面考慮有以下三個主要方面:

  • UI 元素: 有用戶最終看到并且與之交互的核心視覺元素。GWT 提供了一個大量的廣泛使用和常見的元素列表,本教程我們將涉及從基本到復雜的變化。

  • 布局: 他們定義應該如何在屏幕上組織 UI 元素,并且提供一個最終的外觀和風格給 GUI(圖形用戶界面)。這部分將在布局這一章涉及。

  • 行為: 當用戶與 UI 元素交互時,這些事件發生。這部分將在事件處理這一章涉及。

每個 SWING 控件從下列組件類的等級繼承屬性。

SWING UI 元素

下列是當使用 SWING 來設計 GUI 時常用的控件列表。

JFrame

SWING 容器

容器是 SWING GUI 組件的組成部分。一個容器提供了一個可以放置組件的空間。在 AWT 中,一個容器是組件本身,并且它增加了功能來添加組件本身。下面是需要考慮的注意事項。

  • 容器的子類被稱為容器。例如 JPanel,JFrame 和 JWindow。

  • 容器可以僅僅添加組件到自身。

  • 一個默認的布局使用 setLayout 方法來呈現在每個可以被重寫的容器中。

?下面是當使用 SWING 設計 GUI 事件時常用的容器列表。

JFrame?– java的GUI程序的基本思路是以JFrame為基礎,它是屏幕上window的對象,能夠最大化、最小化、關閉。

JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。

JLabel?– JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設置垂直和水平對齊方式,指定標簽顯示區中標簽內容在何處對齊。默認情況下,標簽在其顯示區內垂直居中對齊。默認情況下,只顯示文本的標簽是開始邊對齊;而只顯示圖像的標簽則水平居中對齊。

JTextField?–一個輕量級組件,它允許編輯單行文本。

JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點創建密碼(密碼)

JButton?– JButton 類的實例。用于創建按鈕類似實例中的 "Login"。

說明?

在Swing組件中,最常見的一個容器就是JFrame。

JFrame是一個獨立存在的頂級容器(也叫窗口),不能放置在其他容器之中。

JFrame支持通用窗口所有的基本功能,例如窗口最小化、設定窗口大小等。

常用方法

? ?1.JFrame() ? ?創建一個無標題的窗口

? ? ? ? ?2.JFrame(String s) ? ?創建標題為s的窗口

? ? ? ? ?3.public void setSize(int width,int height) ? ?設置窗口大小

? ? ? ? 4.public void setLocation(int x,int y) ? ?設置窗口位置,默認位置為(0,0)

? ? ? ? 5.public void setBounds(int a,int b,int width,int height) ? ?設置窗口的初始位置是(a,b),即距離屏幕左邊a個像素,距離屏幕上方b個像素,窗口的寬是width,高是height
? ? ? ? 6.public void ?setBackgorund(color.red) ? ? ? ?設置窗體背景顏色

? ? ? ? 7.public void setVisible(boolean b) ? ? 設置窗口是否可見,默認窗口是不可見的

? ? ? ? 8.public void setResizable(boolean b) ? ? 設置窗口是否可調整大小,默認窗口可調整大小

? ? ? ? 9.public void dispose() ? ? 撤銷當前窗口并釋放所有使用的資源?
? ? ? ? 10.add(Component comp) ? ? 向容器中增加組件

? ? ? ? 11.getContentpane() ? ? ?返回此窗口的容器對象

? ? ? ? 12.public void setExtendedState(int state) ? ? 設置窗口的擴展狀態,其中參數state取JFrame類中的下面類常量:
? ? ? ? MAXIMIZED_HORIZ(水平方向最大化)
? ? ? ? MAXIMIZED_VERI(垂直方向最大化)
? ? ? ? MAXIMIZED_BOYH(水平、垂直方向最大化)

? ? ? ? 13.public void setDefaultClose(int operation) ? ?設置單擊窗體右上角的關閉圖標后,程序會做出怎樣的處理
? ? 參數operation取JFrame類中的下列int型static常量,程序根據參數operation取值做出不同的處理:
? ? ? ? DO_NOTHING_ON_CLOSE(什么也不做)
? ? ? ? HIDE_ON_CLOSE(隱藏當前窗口)
? ? ? ? DISPOSE_ON_CLOSE(隱藏當前窗口并釋放窗體占有的其他資源)
? ? ? ? EXIT_ON_CLOSE(結束窗口所在應用程序)?

示例:

private static void createAndShowGUI(){//創建并設置JFrame容器窗口JFrame frame = new JFrame("JFrameTest"): //設置關閉窗口時的默認操作	 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 		                     frame.setSize(250,150);/設置窗口尺寸frame.setVisible(true);//展示JFrame容器窗口 
}
public static void main(String] args){//使用SwingUtilities工具類調用createAndShowGUl()方法顯示GUI程序         SwingUtilities.invokeLater(Example01::createAndShowGUl);
}

?結果:

示例通過JFrame類創建了一個窗體,并指定窗體對象標題為“JFrameTest”。

通過JFrame類的相關方法分別設置了窗體對象關閉時的操作、窗體尺寸大小以及窗體信息可見。

在main()方法中,使用了javax.swing包下中SwingUtilities(封裝有一系列操作Swing的方法集合工具類)工具類的invokeLater()方法執行了GUI程序。

JDialog

JDialog是Swing的另外一個頂級容器,通常用來表示對話框窗口。

JDialog對話框可分為兩種:模態對話框和非模態對話框。

模態對話框:是指用戶需要等到處理完對話框后才能繼續與其他窗口交互。

非模態對話框:是指允許用戶在處理對話框的同時與其他窗口交互。

說明

雖然JFrame和JDialog都可以創建頂級容器窗口,但JDialog創建的窗口右上角沒有放大和縮小功能。

由于創建JDialog容器對象時,設置的模態參數modal為true,所以在操作時,必須先關閉JDialog對話框后才可以與JFrame窗口進行交互。

常用方法

重點內容

1.super(超級)
主要用于打開了子窗體時,阻塞對父窗體的修改。也就是說打開了窗體便不能對父窗體有任何動作,關閉子窗體才可以對父窗體開始操作。
super(A,B,C);
A-----父窗體對象
B-----對話框標題
C-----是否阻塞父窗體

2.按鈕Btton
JButton btn=new JButton("彈出對話框");
表示創建按鈕,然后按鈕標簽為“彈出對話框”。

c.setLayout(new FlowLayout());
設置布局,使用流布局。不使用流布局(也就是當沒有使用這句代碼時),按鈕會占滿整個窗體,而不是像下面的淡藍色長方形了。

示例:

import java.awt.Container;// 容器
import java.awt.FlowLayout;// 布局
import java.awt.event.ActionEvent;// 動作事件
import java.awt.event.ActionListener; // 動作監聽
import javax.swing.*;// JDialog窗體是Swing組件中的對話框class Demo extends JDialog{		// Demo繼承JDialog類public Demo(JFrame frame){/** 第一個參數:父窗體對象* 第二個參數:對話框標題* 第三個參數:是否阻塞父窗體*/super(frame,"對話框標題",true);Container c=getContentPane();// 獲取窗體容器,Container(容器),content(內容),pane(窗格)c.add(new JLabel("這是一個對話框"));// 設置一個標簽,label(標簽)//1		setVisible(true);// 設置窗體可見,visible(可見物),放這最后對話框縮起來setBounds(400,300,100,100);// 設置窗體坐標,x、y、長、寬,bounds(界限)}public static void main(String[] args){JFrame f=new JFrame("父窗體");f.setBounds(300,200,300,300);Container c=f.getContentPane();JButton btn=new JButton("彈出對話框");c.setLayout(new FlowLayout());//設置布局,使用流布局c.add(btn);// 容器c里添加按鈕f.setVisible(true);// 窗體是否可見f.setDefaultCloseOperation(EXIT_ON_CLOSE);// 關閉規則//添加動作監聽btn.addActionListener(new ActionListener(){	// Action(行動)public void actionPerformed(ActionEvent e){// performed(執行),event(事件)
//1				new Demo(f);// 傳入f// 設置Demo類d,對d進行操作指令Demo d=new Demo(f);d.setVisible(true);// 設置窗體可視化}});}
}

運行效果:

  • 源碼剛開始運行時,沒有任何動作
  • 點擊按鈕后

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43573.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器信息獲取工具

功能介紹 SSH連接到遠程服務器: 用戶可以輸入目標服務器的IP地址、用戶名、密碼以及SSH端口(默認22)。 工具會嘗試連接到遠程服務器,并在連接失敗時顯示錯誤信息。 運行命令并返回輸出: 工具可以在遠程服務器上運…

python (必看)10個提升接口自動化編寫效率的腳本!

親愛的開發者們,👋 在快速迭代的軟件開發周期中,接口自動化測試扮演著至關重要的角色。今天,我們將分享10個實用的Python小腳本,它們能夠顯著提升你編寫接口自動化測試的效率。無論是初學者還是資深工程師,…

某音商品詳情數據實時API接入

在抖音平臺上,商品詳情數據接口(通常被提及為“item get”或”item_get_app“API)并不是直接對公眾或第三方開發者開放的。抖音的API和接口主要用于其內部系統、合作伙伴以及通過其官方渠道(如抖音小店、抖音開放平臺等&#xff0…

算法體系-26 第二十六節:第26節:單調棧結構 (5節)

一 單調棧知識講解 1.1描述 一個數組里面想的到每個位置與他最近的左邊和右邊比他小的最近的信息 1.2 分析 通過單調棧的特點,for遍歷數組中的每個數,當前數來的時候對比單調棧中的數進行每個數的左右判斷完滿足條件的進行更新到當前i種的 int[][] re…

WPScan漏洞掃描工具的介紹及使用

目錄 1. 介紹2. 常用參數 1. 介紹 WPScan是Kali Linux默認自帶的一款漏洞掃描工具,它采用Ruby編寫,能夠掃描WordPress網站中的多種安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主題漏洞,最新版本WPScan的數據庫中包含超過18…

采用3種稀疏降噪模型對心電信號進行降噪(Matlab R2021B)

心電信號采集自病人體表,是一種無創性的檢測手段。因此,心電信號采集過程中,本身也已經包含了機體內部其他生命活動帶來的噪聲。同時,由于采集設備和環境中存在電流的變化,產生電磁發射等物理現象,會對心電…

學習測試7-ADB的使用

ADB是什么? ADB,即 Android Debug Bridge(安卓調試橋) 是一種允許模擬器或已連接的 Android 設備進行通信的命令行工具,它可為各種設備操作提供便利,如安裝和調試應用,并提供對 Unix shell&…

最新全國1-5級標準河流水系矢量數據

2023最新全國一級~五級標準河流水系 shp 矢量數據 2023最新全國一級~五級標準河流水系 shp 矢量數據 Arcgis 五級河流水系全國合集和按省區分 坐標系:wgs84 更新年份:2023年 包含20230SM提取全國超詳細水體 Arcgis 矢量數據&a…

AcWing 849. Dijkstra求最短路 I

給定一個 n 個點 m 條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。 請你求出 11 號點到 n 號點的最短距離,如果無法從 1 號點走到 n 號點,則輸出 ?1。 輸入格式 第一行包含整數 n 和 m。 接下來 m 行每行包含三個整…

Python從Excel表中查找指定數據填入新表

#讀取xls文件中的數據 import xlrd file "原表.xls" wb xlrd.open_workbook(file) #讀取工作簿 ws wb.sheets()[0] #選第一個工作表 data [] for row in range(7, ws.nrows): name ws.cell(row, 1).value.strip() #科室名稱 total1 ws.cell(row, 2…

TIA博途與威綸通觸摸屏無實物仿真調試的具體方法示例

TIA博途與威綸通觸摸屏無實物仿真調試的具體方法示例 準備條件: TIA PORTAL V16 S7-PLCSIM V16 EasyBuilderPro V6.9.1 NetToPLCsim V1.2.5 如有需要,可以在這個鏈接中下載 NetToPLCSim - Browse Files at SourceForge.net538 weekly downloads3 weekly downloads12 weekly d…

QTransform 解析

實例: 以點(100,100) 圍繞點(200,150)旋轉45后的坐標, 采用QTransform 類方法實現移動變換. Test1 采用一個QTransform 對象,通過連續的變換后,發現最后的結果與預先的不一致. 原因: 當trans1.translate(-200., -150.); 后,坐標系的原點變成了-200,-150. 之后trans1.rotat…

LoveDA: 遙感土地覆蓋數據集的領域自適應語義分割

引入了土地覆蓋域自適應語義分割(LoveDA)數據集來推進語義和可轉移學習。LoveDA數據集包含來自三個不同城市的5987張高分辨率圖像和166768個帶注釋的對象。與現有數據集相比,LoveDA數據集包含兩個領域(城市和農村),這帶來了相當大的挑戰,因為…

華為OD機試題-貪心歌手

題目解析 題目描述: 歌手準備從 A 城去 B 城參加演出 按照合同,他必須在 T 天內趕到。歌手途徑 N 座城市。歌手不能往回走。每兩座城市之間需要的天數都可以提前獲知。歌手在每座城市都可以在路邊賣唱賺錢。經過調研,歌手提前獲知了每座城市…

C# AOP面向切面編程

AOP(Aspect-Oriented Programming,面向切面編程)是一種編程范式,旨在將橫切關注點(Cross-cutting Concerns)從業務邏輯中分離出來。在傳統的面向對象編程中,橫切關注點(如日志記錄、…

R包:蛋白質組學質控評估PTXQC包

介紹 PTXQC包是2016年發表在J Proteome Res期刊上的R包,它主要是對MaxQuant輸出結果進行提取處理從而獲得評估蛋白質質量結果。 安裝 從github安裝,安裝過程會自動構建tutorial。 devtools::install_github("cbielow/PTXQC", build_vignet…

AI數字人直播saas系統源碼部署火爆!無人直播系統全攻略

隨著直播行業的日益興盛,各種直播模式和玩法不斷涌現。其中,AI數字人直播更是憑借著其在降本增效的獨特優勢而在眾多直播模式中脫穎而出,成為了眾多企業已經引進或計劃引進的新型技術。而各大數字人源碼廠商推出的AI數字人直播saas系統源碼部…

面試題07-09

知道了 InnoDB 的索引實現后,就很容易明白為什么不建議使用過長的字段作為主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。再例如,用非單調的字段作為主鍵在 InnoDB 中不是個好主意,因為 InnoD…

走拼箱貨必看海運拼箱的實用技巧

在國際海運運輸中,海運拼箱適用于貨物數量較少或體積不足以填滿整個集裝箱的情況。 海運拼箱貨物通常由物流公司或貨代進行組織和管理。多個貨主的貨物通過合理拼裝,使集裝箱空間得到充分利用。 那么,在海運拼箱和整柜有哪些不同&#xff0c…

Linux -- 認識gcc/g++、代碼的編譯過程

目錄 前言: 使用 gcc/g: 代碼的編譯過程: 預處理: 頭文件展開: 宏替換去注釋: ?編輯 條件編譯: 編譯: 匯編: 鏈接: 動態庫(動態鏈…