1. JavaGUI主要開發(fā)工具 -- Swing類庫的誕生與功能
一個(gè)合格的Java Developer,不僅要掌握技術(shù),還要有一定的Java歷史背景知識(shí)儲(chǔ)備。所以先簡(jiǎn)要介紹一下用于JavaGUI開發(fā)的主要類庫:Swing。
在Java 1.0時(shí)代便有設(shè)計(jì)GUI的基本類庫Abstract Window Toolkit,簡(jiǎn)稱AWT。AWT庫工作原理是將處理用戶界面元素的任務(wù)委派給目標(biāo)平臺(tái)(操作系統(tǒng))的本地GUI工具箱,由本地GUI工具箱負(fù)責(zé)用戶界面元素的創(chuàng)建和動(dòng)作。這種工作方式是有利也有弊,先說下利處:
處理速度可能要快一點(diǎn)。
可以適應(yīng)不同的平臺(tái),“一次編寫,隨處使用”。
弊處:
觀感依賴于目標(biāo)平臺(tái)。
有些平臺(tái)并沒有像Windows或Mac這樣豐富的界面組件(早期)。所以把AWT的設(shè)計(jì)工作限制在了“最小公分母”。
不同平臺(tái)存在不同的bug。
1996年,Netscape創(chuàng)建了另一種GUI庫IFC,他的工作方式是?將用戶界面組件繪制在空白窗口上,而對(duì)等體只需要負(fù)責(zé)創(chuàng)建和繪制空白窗口。Sun和Netscape合作并完善了這種方式,創(chuàng)建了名為Swing的用戶界面庫,這便是Swing的誕生。
? 但是Swing并沒有完全取代AWT,到目前Java SE 8中依舊有AWT與Swing兩個(gè)功能類庫:
AWT import java.awt (java為核心包)
Swing import javax.swing (javax包為功能擴(kuò)展包)
Swing沒有完全取代AWT的原因是:Swing是基于AWT的架構(gòu)之上,Swing僅僅是提供了能力更強(qiáng)大的用戶界面組件。在Swing編寫的程序中,還是需要AWT進(jìn)行事件處理。簡(jiǎn)單說就是,Swing是用戶界面類,AWT是底層機(jī)制。
2.創(chuàng)建JFrame框架
Frame意為框架,也就是最頂層的窗口,可以在框架里添加組件。我們創(chuàng)建一個(gè)窗口首先要?jiǎng)?chuàng)建一個(gè)框架。
注:Swing組件類都以“J”開頭,如 JButton,JFrame等,AWT組件不帶“J"。如果Swing組件和AWT組件一起用可能會(huì)導(dǎo)致視覺和行為的不一致。
現(xiàn)在,我們來創(chuàng)建一個(gè)空框架:
package simpleFrame; //會(huì)用到awt和swing的類,先import。 import java.awt.*; import javax.swing.*; //創(chuàng)建一個(gè)SimpleFrame的類,里面只有一個(gè)main函數(shù),main函數(shù)里有個(gè)事件分派線程。 public class SimpleFrame { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new SizedFrame(); //new一個(gè)SizeFrame對(duì)象給frame變量管理,這便有了框架。SizeFrame是JFrame的子類。 frame.setTitle("SimpleFrame"); //設(shè)置框架的標(biāo)題. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設(shè)定關(guān)閉按鈕。 frame.setVisible(true); //設(shè)定框架可見。 } }); } } //其實(shí)到這里為止,我們可以在第12行直接new一個(gè)JFrame交給frame,但是JFrame默認(rèn)框架大小是0×0,沒什么實(shí)際意義。 //所以我們選擇繼承JFrame做一個(gè)子類起名SizedFrame,在這個(gè)類里做一個(gè)構(gòu)造器來設(shè)定框架的大小。 class SizedFrame extends JFrame { //構(gòu)造器 public SizedFrame() { //下面四行代碼為獲取你pc屏幕的高度和寬度,交給int變量screenHeight和screenWidth。 Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenHeight = screenSize.height; int screenWidth = screenSize.width; //setSize方法由父類Component類(GUI對(duì)象的祖先)繼承而來。設(shè)定框架長(zhǎng)寬都為屏幕的1/2. //setLocationByPlatform由Window類(Frame類的父類)繼承而來。由平臺(tái)(操作系統(tǒng))來選擇一個(gè)合適的顯示位置。 setSize(screenWidth/2,screenHeight/2); setLocationByPlatform(true); //setIconImage方法由Frame類繼承而來,設(shè)置框架圖標(biāo)。 Image img = new ImageIcon("icon.gif").getImage(); setIconImage(img); //當(dāng)然,事件分派線程里的設(shè)定標(biāo)題、設(shè)定關(guān)閉按鈕、和設(shè)定框架可見操作,也可以放在構(gòu)造器里來做。 } }
Windows 10下運(yùn)行:
3.在框架中添加組件JComponent

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)