1. 主要な JavaGUI 開(kāi)発ツール - Swing クラス ライブラリの誕生と機(jī)能
資格のある Java 開(kāi)発者は、テクノロジーを習(xí)得するだけでなく、ある程度の Java の歴史的背景知識(shí)も持っている必要があります。そこでまず、JavaGUI 開(kāi)発に使用される主要なクラス ライブラリである Swing を簡(jiǎn)単に紹介します。
Java 1.0の時(shí)代には、GUIを設(shè)計(jì)するための基本的なクラスライブラリであるAbstract Window Toolkit、略してAWTがありました。 AWT ライブラリの動(dòng)作原理は、ユーザー インターフェイス要素の処理タスクをターゲット プラットフォーム (オペレーティング システム) のローカル GUI ツールボックスに委任することであり、ローカル GUI ツールボックスはユーザー インターフェイス要素の作成とアクションを擔(dān)當(dāng)します。この作業(yè)方法には利點(diǎn)と欠點(diǎn)があります。まず利點(diǎn)について説明します:
処理速度が速くなる可能性があります。
さまざまなプラットフォームに適応でき、「一度書(shū)いたらどこでも使用できます」。
欠點(diǎn):
見(jiàn)た目や操作感はターゲット プラットフォームによって異なります。
一部のプラットフォームには、Windows や Mac (初期) ほど豊富なインターフェイス コンポーネントがありません。したがって、AWTの設(shè)計(jì)作業(yè)は「最小公倍數(shù)」に限定されます。
プラットフォームが異なれば、バグも異なります。
1996 年に、Netscape は別の GUI ライブラリである IFC を作成しました。これは、空白のウィンドウにユーザー インターフェイス コンポーネントを描畫(huà)することで機(jī)能し、ピアは空白のウィンドウの作成と描畫(huà)のみを行う必要があります。 Sun と Netscape は協(xié)力してこのアプローチを完成させ、Swing と呼ばれるユーザー インターフェイス ライブラリを作成しました。これが Swing の誕生です。
しかし、Swing は AWT を完全に置き換えたわけではありません。現(xiàn)在、Java SE 8 にはまだ AWT と Swing の 2 つの関數(shù)クラス ライブラリがあります:
AWT import java.awt (Java はコア パッケージ)
Swing import javax.swing ( javax パッケージ) (機(jī)能拡張パック)
Swing が AWT を完全に置き換えていない理由は、Swing が AWT アーキテクチャに基づいており、Swing はより強(qiáng)力なユーザー インターフェイス コンポーネントのみを提供するためです。 Swing で書(shū)かれたプログラムでも、イベント処理には AWT が必要です。簡(jiǎn)単に言うと、Swing はユーザー インターフェイス クラスであり、AWT はその基礎(chǔ)となるメカニズムです。
2. JFrameフレームワークを作成します
フレームとは、最上位のウィンドウであるフレームを意味し、フレームにコンポーネントを追加できます。ウィンドウを作成するときは、まずフレームを作成する必要があります。
注: JButton、JFrame など、Swing コンポーネント クラスはすべて「J」で始まります。AWT コンポーネントには「J」がありません。 Swing コンポーネントを AWT コンポーネントと一緒に使用すると、視覚的および動(dòng)作上の不一致が生じる可能性があります。
さて、空のフレームを作成しましょう:
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è)定框架可見(jiàn)。 } }); } } //其實(shí)到這里為止,我們可以在第12行直接new一個(gè)JFrame交給frame,但是JFrame默認(rèn)框架大小是0×0,沒(méi)什么實(shí)際意義。 //所以我們選擇繼承JFrame做一個(gè)子類起名SizedFrame,在這個(gè)類里做一個(gè)構(gòu)造器來(lái)設(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ì)象的祖先)繼承而來(lái)。設(shè)定框架長(zhǎng)寬都為屏幕的1/2. //setLocationByPlatform由Window類(Frame類的父類)繼承而來(lái)。由平臺(tái)(操作系統(tǒng))來(lái)選擇一個(gè)合適的顯示位置。 setSize(screenWidth/2,screenHeight/2); setLocationByPlatform(true); //setIconImage方法由Frame類繼承而來(lái),設(shè)置框架圖標(biāo)。 Image img = new ImageIcon("icon.gif").getImage(); setIconImage(img); //當(dāng)然,事件分派線程里的設(shè)定標(biāo)題、設(shè)定關(guān)閉按鈕、和設(shè)定框架可見(jiàn)操作,也可以放在構(gòu)造器里來(lái)做。 } }
Windows 10 で実行:
3. コンポーネント JComponent をフレームに追加します

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)