Java SwingでGUIを手書きする話

岩手県立大学 Advent Calendar 2020 第9日目の記事です。
今日はソフトウェア演習ではJavaGUIを手書きするという話をしようと思います。
(ただし我々の世界とは時間軸が完全に一致していない可能性があります...)

Java SwingでGUIを手書きする

ソフトウェア演習ではJavaを用いたプログラミングの授業が行われます。
CLIで動作するアプリだけでなく、SwingというJavaGUI用クラスライブラリを用いたアプリケーション作成の課題が出されたりします。

Hello,World的なGUIアプリケーション

GUIアプリは以下のような感じで手書きします。JBuilderのお試し版をインストールして動かしている人もいますが、メモリが128MBの環境ではJBuilderのようなIDEはだいぶ重たい動作になってしまいます...。

import javax.swing.JFrame;
import javax.swing.JButton;

public class Hello extends JFrame {
    Hello() {
        super("hello");
        getContentPane().add(new JButton("Hello,World."));
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
    public static void main(String... args) {
        new Hello();
    }
}

そのためソフトウェア演習ではMuleというemacsへの多言語対応版エディタを使ってソースコードを書いています。人によってはよりコンパクトなエディタであるviを使ったりもするようです。
デスクトップ環境のCDEに付属しているdtpadというメモ帳風のエディタも試してみたのですが、さすがにこれでソースコードを書くのは少々骨が折れます...。

エディタの話を始めると大論争がおこるという都市伝説がありますが、個人的にはviの基本的な使い方を抑えておくと後々つぶしが効く(?)感じです。

Swing GUIを手書きする場合のコツ

そしてSwing GUIを手書きするという点についても、それほど難しい感じではありません、以下のような感じでBorderLayoutにボタンやラベル、テキストエリアを追加してゆくことでUI部品の配置やウインドウリサイズ時の再配置が動的に行われるようになります。

f:id:furandon_pig:20201210213640p:plain

私もSwingを使いこなせているワケではありませんが、ちょっとしたGUIアプリケーションを作成するだけであれば、以下のクラスの使い方を把握しているだけで充分対応できるという印象です。

GUI部品はどのアプリケーションでも似たような使い方になるので、イディオム的な使い方のサンプルを用意しておくと、テンプレート的な感じでソースコードを利用できるのでおススメです。