IntelliJ IDEA で最小限のWindows GUI Form Applicationを作る手順。

#インストールしたてからの環境設定
IntelliJ Ultimte(15.0.2) +JDK 1.8 での例です。
WIndows 環境で、ボタンとラベルを持ったフォームを表示し、ボタンをマウスでクリックしたら、ラベルのテキストを Hello world に変更するというGUIとしては最小限仕様のアプリケーションソフトを作る手順を書いておきます。
(自分はあっちこっち苦労したので)

JDKは別途インストールしておいてください。(例:c:\program files\java\jdk)

#新規にprojectを作る
IntelliJを起動して、Create New Project
![300.png](https://qiita-image-store.s3.amazonaws.com/0/107685/b3fc766a-e41d-6076-4dc0-54dfd9a127b5.png)

Project SDK を選ぶDialogが出てくるが、候補がないので、New ボタンを押し、+JDK(JDK追加)を選択
![100.png](https://qiita-image-store.s3.amazonaws.com/0/107685/5f3c61d4-f9e1-12e6-b569-7748054dcdae.png)

するとこのようにIntelliJインストールフォルダのjreフォルダがデフォで選択される。これでOK押すと、、
![101.png](https://qiita-image-store.s3.amazonaws.com/0/107685/78d94fac-b669-38ca-6c55-2afb65656fb3.png)

jre は JDKじゃないと叱られる。
そりゃそうなんだけど、じゃデフォで選ぶなよ、と思う。
![102.png](https://qiita-image-store.s3.amazonaws.com/0/107685/926d825c-db6d-60ad-cf17-38f449346c37.png)

改めて JDKを指定する。(既にやった後で再現しているので『多分これで良かったはず』です)
![103.png](https://qiita-image-store.s3.amazonaws.com/0/107685/db8278d8-857c-e3a6-a068-7ec124a924ab.png)

必要かどうかわかりませんが、IntelliJ IDEA IU も追加しておきました。
![104.png](https://qiita-image-store.s3.amazonaws.com/0/107685/83c4fd59-6331-7eb4-4534-de2aa5df07dc.png)

こちらはデフォの勧めるとおりOKで問題なし。
![105.png](https://qiita-image-store.s3.amazonaws.com/0/107685/254a3abe-9028-8ab7-63d3-dbf98df35c9b.png)

戻って、ドロップダウンでJDKを選択し、
![200.png](https://qiita-image-store.s3.amazonaws.com/0/107685/8c11626a-71f5-8c14-4538-eaf7e8919085.png)

Java Hello World のテンプレを選びNext
![201.png](https://qiita-image-store.s3.amazonaws.com/0/107685/f9c87fbd-2316-eac0-c843-0601a4716c31.png)

プロジェクト名を入れ、、Finish   あ、大文字で始めるべきでしたね、、
![202.png](https://qiita-image-store.s3.amazonaws.com/0/107685/4bc07648-b0d4-c2ed-cdcb-54c7ec61526d.png)

#GUI formを作成し、イベントハンドラを作る
しばらくすると、必要なソースが整備されるので、src/Main を選択し、右クリックで New/GUI Form
![203.png](https://qiita-image-store.s3.amazonaws.com/0/107685/edb85514-e9dd-510e-c186-6c9e57bf1bff.png)


フォームのクラス名を入れ OK すると
![204.png](https://qiita-image-store.s3.amazonaws.com/0/107685/77a122ee-cef8-a532-9947-b80add6d12d3.png)

こんな感じにフォームができます。JButton と JLabelを適当に配置してみます。(Drag and Drop)
![205.png](https://qiita-image-store.s3.amazonaws.com/0/107685/89a8dace-2d5e-45e9-6d9c-62b45580c63e.png)

こんなふうになりました。
![207.png](https://qiita-image-store.s3.amazonaws.com/0/107685/c8d41ff6-0143-8a43-e8d3-af5761247e4f.png)

ボタンを右クリックして、Create Listener を選択。(このメニューは私が使っているAndroid Studioでは出てこなかったと思うので、
Open Source版?とUltimateの違いなのかもしれませんし、私のAndroid Studioの設定に問題があるのかもしれません、ご存じの方いらっしゃったら教えて頂けると幸いです。)
![208.png](https://qiita-image-store.s3.amazonaws.com/0/107685/f4aff1c4-169b-3d5e-4eec-8772a31d898b.png)

ボタンをマウスでクリックしたら、labelのTextを Hello world に変更するという仕様なので、MouseListenerを選択
![209.png](https://qiita-image-store.s3.amazonaws.com/0/107685/d4d85915-d80c-1ab0-5233-c39e7da75b3a.png)

MouseClicked を選択する
![210.png](https://qiita-image-store.s3.amazonaws.com/0/107685/816980b0-4ac8-ca54-e9ab-36d86abfd680.png)

すると

    Public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);
    }

という、イベントハンドラ(のplace holder)が生成されました。
ところで、MyFormだけですと、ただのクラスなので、JFrameから派生させます。
MyFormのあとで e をtypeするだけで、 extends が候補に出てきます。(下図では ex までtypeしましたが、、)
![211.png](https://qiita-image-store.s3.amazonaws.com/0/107685/b42fe286-eb20-0a67-c96e-6f0a90475919.png)

JFrame も同様に、J だけで候補に出てきます。
半分隠れていますが、ボタンはこちらに既に宣言が自動生成されています。
しかし、ラベルやパネルの宣言はありません。
![212.png](https://qiita-image-store.s3.amazonaws.com/0/107685/cfd462cf-4d90-86f9-9f0b-cef1edd0699d.png)

labelと panelにそれぞれ field name を入れてやると
![213.png](https://qiita-image-store.s3.amazonaws.com/0/107685/c0cbf2e6-edc9-8fc8-d879-d8d01823e541.png)
![214.png](https://qiita-image-store.s3.amazonaws.com/0/107685/fcb85fef-05bd-8e7f-93e6-fee58d88e71e.png)

MyFormに宣言が自動生成されました。
![215.png](https://qiita-image-store.s3.amazonaws.com/0/107685/0961691d-4e8d-71e6-70cd-290674804a85.png)

android studioでは必要がなかった(と思う)4行を入力補助に頼りながら記述。
setDefaultCloseOperationの引数部は Ctrl+Shift+Spaceで候補を出してもらっています。
android studio では、setContentViewがsetContentPaneに相当するんでしょうね(適当な解釈)
android sdk とjdkは違うものだし、activityとJFrameも違うんだから違って当然なのですが、、、
記述する場所はListenerの登録の後ですが、setVisible以外はListener登録の前でも良いはず。
![218.png](https://qiita-image-store.s3.amazonaws.com/0/107685/1c0ef351-778c-ec2a-26f0-91bcf144517b.png)

Main.java に戻り、もともとのコンソール出力の行をコメントアウトし、
MyFormのインスタンスを生成する行を追加します。
実行もしくはデバッグをクリックして
![500.png](https://qiita-image-store.s3.amazonaws.com/0/107685/85642633-037e-d865-b7df-8a64ec393e02.png)

フォームが表示された！
![501.png](https://qiita-image-store.s3.amazonaws.com/0/107685/21911b65-c9f2-c846-ad5f-a42616489861.png)

ボタンを押してラベルの表示が変わった！
![502.png](https://qiita-image-store.s3.amazonaws.com/0/107685/0cdae389-1fa0-74d0-2e32-0e746664dc85.png)

#GUI designerが消える！
というわけで完了なのですが、、一旦IntelliJ IDEAを Closeし、先ほどの projectを開くと、
フォームが xml 形式で表示され、GUI designができない、、、エラーをにおわせるメッセージも表示されている。　
一体どうなっちゃったの？
この場合は、一旦、MyForm.form を閉じて(×ボタンを押す) 
![400.png](https://qiita-image-store.s3.amazonaws.com/0/107685/6cfea2ff-5e91-4412-b921-53943b654a8e.png)

フォームソースを展開し、
![401.png](https://qiita-image-store.s3.amazonaws.com/0/107685/47320b19-c498-c78e-1cc7-a1171dc8544c.png)

.form をダブルクリックして再度開くと、、　GUIなdesignerが表示されます。なんでこうなんだろう。
ここのところは android studioの方が親切と思う。多分設定の問題なのだろうがそう簡単にはたどり着けない気がする。
ちなみに、GUI form designerが記述した xml は手で編集されることを想定していない旨あちこちに書かれている。
更にちなみに、xml形式のformのソースを見たい場合は、form上で右クリック Form Source で表示される。 
![402.png](https://qiita-image-store.s3.amazonaws.com/0/107685/daa378f3-7c8d-ecc7-e567-24eef883f85f.png)

#実行ファイル jarの作成
 IDE上で実行できるようになりましたが、アプリケーションとして配布するには jar を作る必要があります。
[こちら](http://qiita.com/nwtgck/items/7a61c5bb9d5b2d266cfe)に詳しく書かれており、たすかりました。
以下はindowsでやっている、、という点だけがちがう同じ内容です。

メインメニュー/File/Project Structure
![020.png](https://qiita-image-store.s3.amazonaws.com/0/107685/a02f32b2-3f3b-c25d-bb89-d1f593ff69b8.png)

Artifacts  +ボタンを押し JAR/From modules with dependencies
![021.png](https://qiita-image-store.s3.amazonaws.com/0/107685/a92e7681-35bb-1a4c-247f-1f39a6c55bc2.png)

Mainを選べと言われるので、この projectの Mainを選ぶ
![503.png](https://qiita-image-store.s3.amazonaws.com/0/107685/266eece1-3034-a620-d187-a0eb61d249eb.png)
![023.png](https://qiita-image-store.s3.amazonaws.com/0/107685/1a2c8ec6-3a8a-2f7b-a650-3a420fe9643e.png)

このダイアログに戻るので OKで抜ける。
![025.png](https://qiita-image-store.s3.amazonaws.com/0/107685/f8bda449-ef71-841f-94d7-288612c47b37.png)

メインメニュー/Build/Build Artifacts...をクリックすると、
![026.png](https://qiita-image-store.s3.amazonaws.com/0/107685/c9bde79c-167e-9c83-7069-a03b3e0ef939.png)

画面中央に Build Artifact ポップアップメニューが出てくるのでBuildをクリック
![027.png](https://qiita-image-store.s3.amazonaws.com/0/107685/58ecf173-2500-6fc1-149f-237c57e681ea.png)

できた！　ご存じとは思いますが、
ダブルクリックで実行されますし、右クリックプログラムから開く/JavaでもOKです。
(JREがインストールされている環境なら)
![504.png](https://qiita-image-store.s3.amazonaws.com/0/107685/937cc9df-c2f7-af8d-2eb5-c7bd0a31c0d6.png)

#終わりに
長々と書きましたが、独学で本当に入門の場合、後から考えれば簡単な小さなことに躓いて先に進めないことがあると思います。特にIntelliJは自由度が広い分抽象的な説明が多く、超具体的なまとまった例が少ないように思います。ググれば出てくる情報ばかりではありますが、私を助けてくれた多くのネット上のQ&Aに対する感謝の念を込めて、まとめさせて頂きました。お役に立てば幸いです。