ホームページ >类库下载 >java类库 >グラフィカル ユーザー インターフェイス GUI

グラフィカル ユーザー インターフェイス GUI

高洛峰
高洛峰オリジナル
2016-10-19 09:35:362518ブラウズ

1. 主要な JavaGUI 開発ツール - Swing クラス ライブラリの誕生と機能

資格のある Java 開発者は、テクノロジーを習得するだけでなく、ある程度の Java の歴史的背景知識も持っている必要があります。そこでまず、JavaGUI 開発に使用される主要なクラス ライブラリである Swing を簡単に紹介します。

Java 1.0の時代には、GUIを設計するための基本的なクラスライブラリであるAbstract Window Toolkit、略してAWTがありました。 AWT ライブラリの動作原理は、ユーザー インターフェイス要素の処理タスクをターゲット プラットフォーム (オペレーティング システム) のローカル GUI ツールボックスに委任することであり、ローカル GUI ツールボックスはユーザー インターフェイス要素の作成とアクションを担当します。この作業方法には利点と欠点があります。まず利点について説明します:

処理速度が速くなる可能性があります。

さまざまなプラットフォームに適応でき、「一度書いたらどこでも使用できます」。

欠点:

見た目や操作感はターゲット プラットフォームによって異なります。

一部のプラットフォームには、Windows や Mac (初期) ほど豊富なインターフェイス コンポーネントがありません。したがって、AWTの設計作業は「最小公倍数」に限定されます。

プラットフォームが異なれば、バグも異なります。

1996 年に、Netscape は別の GUI ライブラリである IFC を作成しました。これは、空白のウィンドウにユーザー インターフェイス コンポーネントを描画することで機能し、ピアは空白のウィンドウの作成と描画のみを行う必要があります。 Sun と Netscape は協力してこのアプローチを完成させ、Swing と呼ばれるユーザー インターフェイス ライブラリを作成しました。これが Swing の誕生です。

しかし、Swing は AWT を完全に置き換えたわけではありません。現在、Java SE 8 にはまだ AWT と Swing の 2 つの関数クラス ライブラリがあります:

AWT import java.awt (Java はコア パッケージ)

Swing import javax.swing ( javax パッケージ) (機能拡張パック)

Swing が AWT を完全に置き換えていない理由は、Swing が AWT アーキテクチャに基づいており、Swing はより強力なユーザー インターフェイス コンポーネントのみを提供するためです。 Swing で書かれたプログラムでも、イベント処理には AWT が必要です。簡単に言うと、Swing はユーザー インターフェイス クラスであり、AWT はその基礎となるメカニズムです。

グラフィカル ユーザー インターフェイス GUI

2. JFrameフレームワークを作成します

フレームとは、最上位のウィンドウであるフレームを意味し、フレームにコンポーネントを追加できます。ウィンドウを作成するときは、まずフレームを作成する必要があります。

グラフィカル ユーザー インターフェイス GUI

注: JButton、JFrame など、Swing コンポーネント クラスはすべて「J」で始まります。AWT コンポーネントには「J」がありません。 Swing コンポーネントを AWT コンポーネントと一緒に使用すると、視覚的および動作上の不一致が生じる可能性があります。

さて、空のフレームを作成しましょう:

package simpleFrame;

//会用到awt和swing的类,先import。
import java.awt.*;         
import javax.swing.*;

//创建一个SimpleFrame的类,里面只有一个main函数,main函数里有个事件分派线程。
public class SimpleFrame {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new SizedFrame(); //new一个SizeFrame对象给frame变量管理,这便有了框架。SizeFrame是JFrame的子类。
                frame.setTitle("SimpleFrame");   //设置框架的标题.
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设定关闭按钮。
                frame.setVisible(true);          //设定框架可见。
            }
        });
    }
}

//其实到这里为止,我们可以在第12行直接new一个JFrame交给frame,但是JFrame默认框架大小是0×0,没什么实际意义。
//所以我们选择继承JFrame做一个子类起名SizedFrame,在这个类里做一个构造器来设定框架的大小。
class SizedFrame extends JFrame {
    
    //构造器
    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对象的祖先)继承而来。设定框架长宽都为屏幕的1/2.
        //setLocationByPlatform由Window类(Frame类的父类)继承而来。由平台(操作系统)来选择一个合适的显示位置。
        setSize(screenWidth/2,screenHeight/2);
        setLocationByPlatform(true);
        
        //setIconImage方法由Frame类继承而来,设置框架图标。
        Image img = new ImageIcon("icon.gif").getImage();
        setIconImage(img);
        
        //当然,事件分派线程里的设定标题、设定关闭按钮、和设定框架可见操作,也可以放在构造器里来做。
    }
}

Windows 10 で実行:

グラフィカル ユーザー インターフェイス GUI

3. コンポーネント JComponent をフレームに追加します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。