Enable GTK 3 on Linux

せっかくだからJava 9のドキュメントを適当に読んでいる。

これまでlinux上でのグラフィカルなアプリケーションはGTK+2ベースだったが、
9ではそれ以外にGTK+3もサポートするようになった。

GtkTest.java
import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class GtkTest extends Application {
    @Override
    public void start(Stage stage) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("jdk.gtk.version: " + System.getProperty("jdk.gtk.version"));
        fileChooser.showOpenDialog(null);
        Platform.exit();
    }
}

GTK+2がない場合はGTK+3での動作を試すようだが、
両方存在する場合は今までどおり2が使われる。
使用するバージョンを指定する場合は、
システムプロパティjdk.gtk.versionに2か2.2か3を値として設定する。
したがって、以下の三つの起動法

$ java GtkTest
$ java -Djdk.gtk.version=2 GtkTest
$ java -Djdk.gtk.version=2.2 GtkTest

はプロパティ値を含むタイトルを除けば同じ結果となった。

$ java -Djdk.gtk.version=3 GtkTest

の場合は、出てくるファイル選択ダイアログが少し変化した。
自分の環境では、ダイアログ窓のサイズが大きくなり、
ダイアログ上部に「場所」フィールドが加わった。
また、左側のペインに「場所」リスト以外に「デバイス」リストが追加された。
*1

*1:日記用にスクリーンショットを撮ったがアップロードすら面倒なので文章だけで