【Java17】04 SwingによるGUIアプリ作成 コンポーネント

[M1 Mac mini(2020), macOS Big Sur 11.6.1, VScode ver 1.62.3]

SwingでGUIアプリのガワを作成しました。

少しずつ思い出しながらの作業でした。レイアウトにGridBagLayoutを使ってみました。

Javaは手間こそ掛かるものの堅実な働きぶりで頼もしいです。

M1 Macで環境構築してみて、昨年のJava学習開始から如何に遠回りしてきたかを痛感させられました。今までやってきたことはわざわざMavenやEclipseに頼らなくても全てVScodeの通常プロジェクトで事足りるようです。

これまでの試行錯誤が無駄ではなく血肉になって地力アップにつながっていると考えることにします。

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;

public class App extends JPanel{
    private JLabel lbl = new JLabel("PATH");
    private JTextField path = new JTextField();
    private JButton btn1 = new JButton("削除");
    private JButton btn2 = new JButton("クリア");
    private JRadioButton radio1 = new JRadioButton("ディレクトリ");
    private JRadioButton radio2 = new JRadioButton("ファイル");

    public App(){
        GridBagLayout layout = new GridBagLayout();
        this.setLayout(layout);

        GridBagConstraints constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.BOTH;
        constraints.weightx = 10.0;
        constraints.weighty = 10.0;
        constraints.insets = new Insets(2, 2, 2, 2);

        constraints.gridx = 0;	//位置x
        constraints.gridy = 0;	//位置y
        constraints.gridwidth = 1;	//コンポーネントの表示領域のセル数 横
        constraints.gridheight = 1;	//コンポーネントの表示領域のセル数 縦
        layout.setConstraints(lbl, constraints);
        this.add(lbl);

        constraints.gridx = 1;
        constraints.gridwidth = 2;
		constraints.gridheight = 1;
		layout.setConstraints(path, constraints);
		this.add(path);

        constraints.gridx = 3;
		constraints.gridy = 0;
		constraints.gridwidth = 1;
		constraints.gridheight = 1;
		layout.setConstraints(btn1, constraints);
		this.add(btn1);

        constraints.gridx = 1;
		constraints.gridy = 1;
		constraints.gridwidth = 1;
		constraints.gridheight = 1;
		layout.setConstraints(radio1, constraints);
		this.add(radio1);

        constraints.gridx = 2;
		constraints.gridy = 1;
		constraints.gridwidth = 1;
		constraints.gridheight = 1;
		layout.setConstraints(radio2, constraints);
		this.add(radio2);

        constraints.gridx = 3;
		constraints.gridy = 1;
		constraints.gridwidth = 1;
		constraints.gridheight = 1;
		layout.setConstraints(btn2, constraints);
		this.add(btn2);
    }
    public static void main(String[] args){
        JFrame frm = new FrameGridLayout();
		frm.setBounds(100, 100, 350, 150);
	}

}

class FrameGridLayout extends JFrame{
    public FrameGridLayout(){
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setTitle("FILE REMOVER JV v0.0.1");
		JPanel panel = new App();
		this.setContentPane(panel);
		this.setVisible(true);
    }
}

【Java17】03 M1 Macでの開発環境構築 VScodeでプロジェクト作成

[M1 Mac mini(2020), macOS Big Sur 11.6.1, VScode ver 1.62.3]

VScodeでプロジェクトを作成しました。

1.コマンドパレットに”Java:Create java Project”を入力する。
2.プロジェクトの種類を選択する。今回はNo build toolsにしました。
3.プロジェクトを作成するロケーションを設定する。
4.プロジェクト名を入力する。
5.App.javaを開き、テスト実行する。

【Java17】02 M1 Macでの開発環境構築 VScodeの設定&テスト実行

[M1 Mac mini(2020), macOS Big Sur 11.6.1, VScode ver 1.62.3]

VScodeを設定します。

1.拡張機能のインストール
 Extension Pack for JavaとCode Runnerをインストールする。

2.テストコードを実行
 下記ソースコードファイルを作成し、保存ディレクトリをWorkspaceにして実行する。

class QuickStart {
    public static void main(String[] args) {
        System.out.println("Hello, World.");
    }
}

この方法はコマンドパレットから”Java: Getting Started”を入力&エンターで表示されます。

以前環境構築しようとした際はこの方法が分からずに迷走して、ややこしいMavenを使うハメになりました。こんな簡単にできるとは知りませんでした。

ついついやってしまいがちですが、あせってあれやこれやインストールしまくるというのは時間コスト的に最悪ですね。

【Java17】01 M1 Macでの開発環境構築 JDKのインストール他

[M1 Mac mini(2020), macOS Big Sur 11.6.1, VScode ver 1.62.3]

M1 Mac miniに乗り換えたため、また一から開発環境を作っていきます。

EclipseのApple Silicon版はまだリリースされていないので、とりあえずVScodeで構築します。まっさらな状態ですからやみくもにインストールしたりせず、一つ一つ確認しながら進めていきます。

初期状態は以下の通りです。

入力
--------------------------------------------------
which java
--------------------------------------------------
出力
--------------------------------------------------
/usr/bin/java
--------------------------------------------------

入力
--------------------------------------------------
java --version
--------------------------------------------------
出力
--------------------------------------------------
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
--------------------------------------------------

java.comからJREをダウンロードし、インストールしました。

再度javaの状態を確認しました。出力の内容が変わっています。

java --version
--------------------------------------------------

出力
--------------------------------------------------
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

次にOracleのサイトからJava17のJDK(Arm 64 DMG Installer)をダウンロードし、インストールしました。openJDKでも構いません。

javaの状態を確認しました。インストールに成功したようです。

java --version
--------------------------------------------------

出力
--------------------------------------------------
java 17.0.1 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

今のところM1 Mac miniに入っているJavaの確認です。Java1.8はintel版ですがそのまま進めます。

/usr/libexec/java_home -V
--------------------------------------------------

出力
--------------------------------------------------
Matching Java Virtual Machines (2):
    17.0.1 (arm64) "Oracle Corporation" - "Java SE 17.0.1" /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
    1.8.311.11 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home

【Java11】07 Javaの開発環境構築 エピローグ

2020年4月27日作成

これでJavaの開発環境構築は終了です。

圧倒的知識不足とはいえ、ここまで苦労するとは思いませんでした。

手掛けてしばらくは、Java本体、Apache POI、Java Extension Packを導入しクラスパスを通すなど、試行錯誤を何度繰り返してもエラーの嵐で途方にくれていました。それがMavenプロジェクト作成で嘘のようにノートラブルになりました。「Maven恐るべし」と言ったところでしょうか。

それからEclipseにこだわりがなければ、VScodeでの開発をお勧めします。VScodeでプロジェクト管理すると直にコンピュータを動かしている感覚がありテンションが上がります。(あくまでも感覚に過ぎませんが)

【Java11】06 Javaの開発環境構築 テスト実行編 2

2020年4月27日作成

テスト実行
2. プロジェクト設定及び実行
① 前回で作成したプロジェクトのフォルダ構成は以下の通りとなる。

② pom.xmlを開き、依存関係のところに以下の内容を追記する。
Excelを扱う場合
————————————————–
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi</artifactId>
 <version>4.1.2</version>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>4.1.2</version>
</dependency>
————————————————–

③ テストコードファイルを前回groupIDとして入力し作成されたcomフォルダに置く。
 テストコードファイル名は中身のクラス名と一致させる。
 AppTest.javaは放置。

④ テストコードファイルをVScodeで開く。
 ctrl + opt + N でビルド&デバッグを実行する。(拡張機能 Code Runner が必要)

⑤ 成功すれば確認完了。

【Java11】05 Javaの開発環境構築 テスト実行編1

2020年4月26日作成

前編まででJavaの開発環境が整いました。動作確認を行います。

テスト実行
1. Mavenによるプロジェクトの作成
① VScodeを開き、左下のギア⚙を右クリックしてコマンドパレットを開く。
② mavenと入力して関連する内容を呼び出す。
③ Create Maven Project を選択する。

④ 続いてmaven – archetype – quickstart を選択する。

⑤ maven-archetype-quickstart のバージョンを選択する。
⑥ プロジェクトを置くフォルダを選択する。
⑦ 下段のターミナルが開き、タスクが実行される。
 groupIDとartifactID(プロジェクト名)を適当に入力する。
 versionとpackageはEnter空打ちでOK。
 Y:の所もEnterを空打ちする。

⑧ BUILD SUCCESSが出てプロジェクト作成完了。

次回に続きます。

【Java11】04 Javaの開発環境構築 VScode設定編

2020年4月24日作成

Visual Studio CodeはMicrosoftが開発したプログラム開発環境を備えたエディタです。2015年に初版が公開されました。

UIは典型的なGUIエディタそのもので拡張機能を導入することで手軽にデバッグができるようになります。Javaについてもショートカット1つで一気にビルド&デバッグができ、とても便利です。

以下、VScodeのセッティングについて記します。

1. 拡張機能の導入

拡張機能としてJava Extension Packを導入する。Maven for Javaなど6つの拡張機能がパックになっている。
Code Runnerも必須。これでビルド&デバッグが同時にできるようになる。

2. Javaの場所をsettings.jsonに追記

“java.home”: “/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home”
なおsettings.jsonは下図右上のアイコンをクリックすると編集できます。使い始めた当初はなかなか気がつかなかったです。

【Java11】03 Javaの開発環境構築 Apache POI導入編

2020年4月24日作成

Apache POIはMicrosoft Office形式のファイルを読み書きするためのJavaライブラリです。

公式ページからダウンロードできます。

解凍したフォルダは適当な場所に置きます。中のjarファイルについては全てCLASSPATHを通すことをお勧めします。Mavenでプロジェクトを作成した際、pom.xmlに依存関係を追記する方法もあるようです。

私の.bash_profileの該当箇所は最後に記しておきます。

これまで.bash_profile編集だけはLinux導入時の名残でずっとvimを使ってきましたが、今回のJava導入でVScodeに完全に切り替えました。要はエディタだったら秀丸でもmimikakiでもなんでもいいんです。刷り込みというのは恐ろしいものです。

ただ1日に数百行あるいは1000行以上コードを書くような職業プログラマにとってはviやvimは強力な武器になるであろうことは私なりに想像できます。

————————————————–
export CLASSPATH=/usr/local/poi-4.1.2/poi-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-examples-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-excelant-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-ooxml-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-ooxml-schemas-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-scratchpad-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/activation-1.1.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-codec-1.13.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-collections4-4.4.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-compress-1.19.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-logging-1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-math3-3.6.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-api-2.3.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-core-2.3.0.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-impl-2.3.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/junit-4.12.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/log4j-1.2.17.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/SparseBitSet-1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/ooxml-lib/curvesapi-1.06.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/ooxml-lib/xmlbeans-3.1.0.jar:$CLASSPATH
————————————————–

【Java11】02 Javaの開発環境構築 バージョン管理編

2020年4月24日作成

備忘録として残しておきます。

1. Javaのバージョン確認

1.1 ターミナルにコマンド入力
まずMacに入っているJavaのバージョンを確認

入力
————————————————–
/usr/libexec/java_home -V
————————————————–

出力
————————————————–
Matching Java Virtual Machines (3):
13.0.2, x86_64: “Java SE 13.0.2” /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
11.0.7, x86_64: “Java SE 11.0.7” /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
1.8.0_251, x86_64: “Java SE 8” /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
————————————————–

11と13はオラクル社のサイトからインストーラをダウンロードして導入しました。
今は長期サポート版の11を使っています。

1.1.1 バージョンの切り替え方法
下記内容を.bash_profileに追記

————————————————–
export JAVA_HOME=”$(/usr/libexec/java_home -v 11.0.7)”
export PATH=”/usr/bin:${PATH}:${JAVA_HOME}”
————————————————–

1.1.2 切り替え後のバージョン確認

入力
————————————————–
java –version
————————————————–

出力
————————————————–
java 11.0.7 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
————————————————–

1.2 macのシステム環境設定でも確認可能
Java ー Javaコントロールパネル ー 一般 ー バージョン情報

※JDK(Java Development Kit)
オラクル社のOracle JDKとオープンソースのOpenJDKがあります。前者は2019年4月から商用では有償となりました。