ラベル Java の投稿を表示しています。 すべての投稿を表示
ラベル Java の投稿を表示しています。 すべての投稿を表示

2018-10-21

JavaFX 11 と Netbeans 9.0

Oracle は、先月(米国時間の 2018 年 9 月 25 日)に Java SE 11 / JDK (Java Development Kit) 11 の一般提供を開始しましたが、このリリースから JavaFX のパッケージが削除されてしまいました [1]。JavaFX でちょっとした GUI プログラムを作って業務にも使っていたので、しばらくは JDK 11 に移行せずに古い JDK を使い続けるしかないかなと思っていました。

しかし、JDK 11 がリリースされる一週間前の 9 月 18 日 (UTC) に、単独で JavaFX 11 がリリースされていたのでした [2]。JavaFX に関する情報収集に精を出していなかったせいもあって、JavaFX 11 の存在に気が付い時にはリリースから一カ月近くが経過していました💦。実は Java 11 のリリースノート [1] には、この JavaFX 11 についての情報も記載されていたのですが…、リリース・モデル [3] の変更についての話題に気を取られ、全然読んでいませんでした。

しかしこれで NetBeans 9.0 で JavaFX のアプリケーションのビルドができると意気込み、悪戦苦闘したものの、なんとか、こつこつ作っている JavaFX のアプリケーションのビルドに成功したのでした。そのアプリケーションは紹介できないので、テスト用にバージョンを確認する小さな JavaFX プログラムのスクリーンショットを載せました。

Windows 7 上での JavaFX 11 アプリケーション実行例

目的と Linux の使用環境

今回の目的は、Java 8 で利用していた JavaFX のプロジェクトを、Java 11 の環境へ移行することです。ただし、Netbeans 9.0 を開発環境に使っている場合に限定します。移行するサンプルとして JavaVersion という簡単なプロジェクトを使います。この記事の終わりにコードを紹介しています。

自宅で Linux 環境でも同じように Java 11 へ移行して、JavaFX 11 を利用できるかどうか確認しました。Fedora 29 beta から OpenJDK 8 と 11 を共存させていたのですが、OpenJDK 8 の方を完全に削除しました。使用環境は以下の通りです。

  • OS: Fedora 29 beta (x86_64)
  • IDE: Apache NetBeans IDE 9.0 (Build incubator-netbeans-release-334-on-20180708)
  • java-11-openjdk-11.0.0.28-1.fc29.x86_64
  • java-11-openjdk-devel-11.0.0.28-1.fc29.x86_64
  • java-11-openjdk-headless-11.0.0.28-1.fc29.x86_64
  • java-11-openjdk-javadoc-11.0.0.28-1.fc29.x86_64
  • java-11-openjdk-src-11.0.0.28-1.fc29.x86_64

Wayland に未対応

JavaFX 11 のリリースノート [4] を読むと、Ubuntu 18.04 で Wayland のウィンドウサーバーを有効にすると JavaFX 11 がクラッシュするとあります。これは、このバージョンから JavaFX のコードが GTK 3 へ移行したことに原因があるようです。これは Ubuntu 固有の問題ではなく、Fedora でも確認できました。

これを回避する方法として次の二点が紹介されています。

  1. Wayland を使わず Xorg を使う。
  2. 強制的に GTK 2 を使う。java -Djdk.gtk.version=2 ...

将来この問題が GTK 3 の環境下で解決されることを期待して、ひとまずログイン時にデフォルトの Wayland ではなく、Xorg を明示的に指定 (GNOME on Xorg) して対応することにします。

GNOME ログイン時に Wayland を無効に(GNOME on Xorg を選択する)

※ これからの説明は、参考サイト [5] の内容を確認し、自分の環境に合わせて書き直したものです。

JavaFX 11 のダウンロードとライブラリの登録

参考サイト [6] から、JavaFX Linux SDK (openjfx-11_linux-x64_bin-sdk.zip) をダウンロードして、適当なディレクトリに展開します。私は、ホームディレクトリ内に lib ディレクトリを用意しておいて、その中に展開しています。

Netbeans を起動して、メニューバーから Tools → Libraries を選び、Ant Library Manager ダイアログの画面左下の New Library ... ボタンをクリックして、展開しておいた /home/bitwalk/lib/javafx-sdk-11/lib/ 内の jar ファイルを選択して JavaFX という名前を付けてライブラリに登録しておきます。

JavaFX ライブラリの登録

Netbeans 9.0 で JavaFX のプロジェクトは作れない

JDK 11 には JavaFX 11 の SDK が含まれていないので当然ですが、Netbeans 上で JavaFX プロジェクトを作成することはできません。

JDK 11 での JavaFX プロジェクトの作成

Netbeans 9.0 でモジュール用プロジェクト ModuleTest を作成

メニューバーから Files → New Project... を選び、New Project のダイアログ画面の Choose Project のステップにおいて Categories のリストから Java、Projects のリストから Java Modular Project を選択して Next > ボタンをクリックします。

Name and Location ステップで、プロジェクト名などの設定をします。ここでは Project Name を ModuleTest として Finish ボタンをクリックしてプロジェクトの作成を完了します。

モジュール用プロジェクト ModuleTest の作成

ここでは、今まで Java のバージョンを表示する JavaFX のプロジェクト JavaVersion を新しく作成したモジュール用プロジェクトにコピーするため、プロジェクトのペインに表示しています。JavaVersion が赤字になっているのは、この環境ではエラーがあってビルドできないからです。

JavaFX ライブラリの追加

さて、作成したプロジェクト ModuleTest を選択、右クリックしてプロダウンメニューを表示、Properties を選択してプロジェクトのプロパティ画面を表示させます。

モジュール用プロジェクト ModuleTest のプロパティ画面表示

左側の Categories から Libraries を選び、右側の Compile タブを表示します。Compile-time Libraries で Modulepath の行右側の ボタンをクリックして、メニューから Add Library... を選びます。

Add Library のダイアログで、あらかじめ登録しておいた JavaFX を選択して Add Library ボタンをクリックして追加します。

Modulepath に JavaFX ライブラリが追加されたことを確認してから OK ボタンをクリックして Project Properties - ModuleTest のウィンドウを閉じます。

JavaFX ライブラリの追加

モジュールの作成

次に、再度作成したプロジェクト ModuleTest を選択、右クリックしてプロダウンメニューを表示、New → Module を選択して新しいモジュールを作成します。

モジュールの作成

ここでは Module Name を javafxApp として Finish ボタンをクリックします。

モジュール javafxApp モジュールの作成

するとモジュール定義ファイル module-info.java がクラスディレクトリ ModuleTest/src/javafxApp/classes のトップに生成されて、右側のエディタのペインに表示されます。

空のモジュール定義ファイル module-info.java

生成された module-info.java には、以下のように依存するモジュールと公開するモジュールを記述します。

リスト:module-info.java 

記述後の module-info.java は以下のようになります。

モジュール定義ファイル module-info.java

以前のプロジェクトで利用していたパッケージを ModuleTest プロジェクトへコピーします。

既存のパッケージを ModuleTest プロジェクトへコピー

メインプロヘクト、メインクラスの指定とコンパイル、実行

メニューバーから Run → Set Main Project から ModuleTest を選んでメインプロジェクトに設定します。

メインプロジェクトの設定

再び、左側のプロジェクトのペインで ModuleTest を選択、右クリックしてプロダウンメニューを表示、Properties を選択してプロジェクトのプロパティ画面を表示させます。左側の Categories から Run を選び、右側の Main Class のエントリに起動するメインクラス javaversion.JavaVersion を入力して OK ボタンをクリック、プロパティ画面を閉じます。

メインクラス javaversion.JavaVersion の設定

キーボード F6 を押して、プロジェクトをコンパイル、実行します。

Fedora 29 上での JavaFX 11 アプリケーション実行例

JavaVersion プロジェクトのソースコード

ご参考までに、今回使用した JaveVersion プロジェクトのソースコードとイメージを紹介しておきます。

リスト:JavaVersion.java 

リスト:JavaVersion.css 

image/java-logo.png

参考サイト

  1. JDK 11 Release Notes, Important Changes, and Information
  2. JavaFX 11がリリース - クロスプラットフォームのGUIライブラリ | ソフトアンテナブログ
  3. JDKの新しいリリース・モデル、および提供ライセンスについて
  4. openjdk-jfx/release-notes-11.md at jfx-11 · javafxports/openjdk-jfx
  5. netbeans - JavaFX deployment library not found in active JDK - Stack Overflow
  6. JavaFX - Gluon
  7. JavaFX (https://openjfx.io/)
  8. bitWalk's: Apache NetBeans 9.0

 

ブログランキング・にほんブログ村へ
にほんブログ村

2018-09-28

Java 11 リリース

Java 11 が米国時間 9 月 25 日付で Oracle 社からリリースされました。

Oracle 社は 2017年に 6ヵ月ごとのリリーススケジュールを発表していますが、今回の JDK 11 はこのスケジュールに沿った最初の長期サポート版 (LTS, Long Term Support ) になります。次の LTS 対象の Java が登場するのは、3 年後 2021 年 9 月に登場する予定の Java 17 になります。

Java 11 の新機能については、下記の参考サイトを参照してください。今回のリリースがこれまでと違う点は、これまで無償で提供されてきた Oracle JDK へのバグフィクスやセキュリティパッチが、Java 11 からは有償サポートを結んだユーザーに対してのみ提供されるようになったことです。多くの Linux ディストリビューションでは無償の OpenJDK をビルドしたパッケージが採用されているので、Linux を使う限り Oracle JDK のサポートの有償化の影響を受けませんが、Windows 上でどうするか、個人的には悩ましいところです。

LTS 版を長く使い続けずに 6ヶ月毎にリリースされる JDK に追従していくのであれば、以前とそれほど状況が変わらないようにも思うのですが、この機に OpenJDK の様々なビルドを試してみたいとも考えています。

参考サイト

  1. Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 - Publickey
  2. Oracle、「Java SE 11(JDK 11)」の一般提供を開始:2026年までアップデートが提供される長期サポートリリース - @IT
  3. 有料化Java SEの新ライセンス体系、米オラクルが公表  :日本経済新聞
  4. オラクル Java SE Subscription FAQ

 

ブログランキング・にほんブログ村へ
にほんブログ村

2018-08-17

Apache NetBeans 9.0

ニュースとしては古くなってしまいましたが 米国時間 7 月 29 日にApache NetBeans 9.0 がリリースされました [1]

Java をはじめとしたプログラミング言語の開発環境としてオープンソースの Eclipse が有名ですが、NetBeans もまた オープンソースの統合開発環境 (IDE) です。私は JavaFX でプログラムを開発するのに便利だったので、Java/JavaFX の開発環境としてずっと使ってきました。ただ 2016 年に NetBeans IDE 8.2 がリリースされた後、新規のリリースが止まり Java 9 以降への対応が待たれていました。NetBeans のリリースが止まった理由は、NetBeans を所有していた Oracle 社が NetBeans を Apache Software Foundation (ASF) へ寄贈したことに因るものなのですが、あらためて NetBeans の誕生から今までの経緯を簡単に紹介します。

NetBeans IDE 開発経緯

開発初期の事柄は参考サイト [2] を参考にして、NetBeans に関わる出来事をまとめました。

  • 1996年  チェコのプラハ・カレル大学の学生プロジェクトで、Xelfi という Java 用 IDE が誕生しました。
    • Delphi のような IDE を Java 用に開発することが目標でした。
  • 1997年  Roman Staněk 氏が Xelfi 開発メンバーと意気投合し、NetBeans, Inc. を起業しました。
  • 1999年  Swing をサポートした NetBeans DeveloperX2 をリリースしました。
  • 1999年  当時の Sun Microsystems 社が NetBeans, Inc. を買収
  • 2000年  Sun Microsystems 社が NetBeans IDE をオープンソースプロジェクトとしてリリースしました。
    • NetBeans コミュニティはその後大きく成長しました。
  • 2010年  Oracle 社が Sun Microsystems 社を買収後は NetBeans IDE は Oracle 社の所有になっていました。
    • NetBeans IDE は Oracle 社が開発している統合開発環境 (IDE) である JDeveloper と競合していました。
  • 2016年 9月13日  Oracle 社はこの NetBeans IDE を Apache Software Foundation (ASF) の Incubator プロジェクトとすることを提案
  • 2016年10月 1日  ASF の Incubator プロジェクトのひとつになりました。
  • 2016年10月 3日  Oracle 社からの最後のリリースとして NetBeans IDE 8.2 がリリースされています。
  • 2018年 7月29日  2 年近くを経て Apache NetBeans 9.0 がリリースされました。
    • IP に抵触する部分を取り除く作業が続けられていました。

Apache NetBeans 9.0

  • JDK 9, JDK 10 への対応
    • Local Variable Type Inference(ローカル変数型推論)をサポートし、Java 10 の var 型のリファクタリングに対応
    • Java 9 のモジュール機能 Jigsaw のサポート
      • Classpath に加えて Modulepath が加わり、単一の JDK 9 モジュールとして、デフォルトのパッケージを module-info.java に記載して利用できる。
    • 新しい Java Modular プロジェクト型
    • JDK9 の Java Shell のサポートを導入したことで、Read-Eval-Print-Loop(REPL)が利用できるようになった。

Fedora 28 上で使う

インストールしてある OpenJDK

NetBeans をインストールする前に、使っている Fedora 28 にインストールされている OpenJDK 関連のパッケージを調べてみると、以下のように OpenJFX (JavaFX) を含む Java 8 系のパッケージだけでした。

$ rpm -qa | grep openjdk | sort
java-1.8.0-openjdk-1.8.0.181-7.b13.fc28.x86_64
java-1.8.0-openjdk-devel-1.8.0.181-7.b13.fc28.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.fc28.x86_64
java-1.8.0-openjdk-openjfx-1.8.0.181-7.b13.fc28.x86_64
java-1.8.0-openjdk-openjfx-devel-1.8.0.181-7.b13.fc28.x86_64
java-openjdk-10.0.2.13-1.fc28.x86_64
java-openjdk-headless-10.0.2.13-1.fc28.x86_64
$ 

これで過不足ないかどうかは解りませんが、NetBeans のベータ版などいろいろ試しており、Java 8 系だけでも NetBeans を動作させることはできるはずですので、とりあえずこのまま進めることにします。なお、今年 9 月に Java 11 (LTS) がリリースされる予定になっており、それにあわせて Java 11 に Fedora のパッケージも移行していくと予想されますので、その時に Java の新しい機能の確認をすることにします。

ダウンロードと展開

それでは、まずリリースされた NetBeans 9.0 をダウンロードします。参考サイト [1]Downloading に示されている Binaries(下記にも転記)から incubating-netbeans-java-9.0-bin.zip をここでは $HOME/ダウンロード にダウンロードしました。

NetBeans のインストール先ですが、自分の場合、習慣的に $HOME 以下のローカル・ディレクトリにインストールして使っています。/opt/usr/local 以下にインストールする場合は適宜読み替えてください。以下のように unzip コマンドで展開すると、netbeans ディレクトリ内に展開されます。

$ cd ~/
$ pwd
/home/bitwalk
$ unzip ダウンロード/incubating-netbeans-java-9.0-bin.zip
Archive:  ダウンロード/incubating-netbeans-java-9.0-bin.zip
   creating: netbeans/
   creating: netbeans/ide/
   creating: netbeans/ide/bin/
   creating: netbeans/ide/bin/nativeexecution/
   ...
   (省略)
   ...
  inflating: netbeans/licenses/WSDL-2004  
  inflating: netbeans/licenses/freemarker  
  inflating: netbeans/netbeans.css   
$ 

netbeans.conf の編集

適当なテキストエディタで $HOME/netbeans/etc/netbeans.conf を編集します。netbeans_jdkhome に(NetBeans が使用する)JDK を指定します(下記の赤字の部分)。

$HOME/netbeans/etc/netbeans.conf の編集
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
   ...
   (省略)
   ...
# If you specify the heap size explicitly, you may also want to enable
# Concurrent Mark & Sweep garbage collector.
# (see http://wiki.netbeans.org/FaqGCPauses)
#
netbeans_default_options="-J-XX:+UseStringDeduplication -J-Xss2m -J-Xms32m -J-Dnetbeans.logger.console=true -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dplugin.manager.check.updates=false -J-Dnetbeans.extbrowser.manual_chrome_plugin_install=yes -J--add-opens=java.base/java.net=ALL-UNNAMED -J--add-opens=java.base/java.lang.ref=ALL-UNNAMED -J--add-opens=java.base/java.lang=ALL-UNNAMED -J--add-opens=java.base/java.security=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing=ALL-UNNAMED -J--add-opens=java.desktop/java.awt=ALL-UNNAMED -J--add-opens=java.desktop/java.awt.event=ALL-UNNAMED -J--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -J--add-opens=jdk.jshell/jdk.jshell=ALL-UNNAMED -J--add-modules=jdk.jshell -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED -J--add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -J--add-exports=java.desktop/sun.awt.im=ALL-UNNAMED -J--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED -J--add-exports=java.management/sun.management=ALL-UNNAMED -J--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED -J--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED -J-XX:+IgnoreUnrecognizedVMOptions"

# Default location of JDK:
# (set by installer or commented out if launcher should decide)
#
# It can be overridden on command line by using --jdkhome <dir>
# Be careful when changing jdkhome.
# There are two NetBeans launchers for Windows (32-bit and 64-bit) and
# installer points to one of those in the NetBeans application shortcut 
# based on the Java version selected at installation time.
#
#netbeans_jdkhome="/path/to/jdk"
netbeans_jdkhome="/usr/lib/jvm/java-openjdk"

# Additional module clusters:
# using ${path.separator} (';' on Windows or ':' on Unix):
#
#netbeans_extraclusters="/absolute/path/to/cluster1:/absolute/path/to/cluster2"

desktop ファイル(ランチャー)の作成

GNOME3 のアプリケーション一覧から NetBeans を起動できるように desktop ファイル(ランチャー)を生成します。旧バージョンの NetBeans IDE 8.2 系のインストーラが作成した desktop ファイルの内容を参考にしました。下記の内容のテキストファイルを netbeans.desktop の名前で $HOME/.local/share/applications/ 以下に保存します。

/opt/usr/local 以下に NetBeans をインストールする場合は、自分以外のアカウントからも利用できるように /usr/share/applications/ 以下に desktop ファイルを保存します。

$HOME/.local/share/applications/netbeans.desktop の作成例
[Desktop Entry]
Encoding=UTF-8
Name=Apache NetBeans IDE
Comment=The Smarter Way to Code
Exec=/bin/sh "/home/bitwalk/netbeans/bin/netbeans"
Icon=/home/bitwalk/netbeans/nb/netbeans.png
Categories=Application;Development;Java;IDE
Version=1.0
Type=Application
Terminal=0

Name[ja_JP]=Apache NetBeans IDE

ちなみに .local のような隠しファイルを扱うには、GNOME Files (Nautilus) で次のように「隠しファイルを表示する (H)」のチェックボックスにチェックを入れておきます。

GNOME Files の隠しファイルの表示設定

NetBeans 最初の起動

作成した desktop ファイル(ランチャー)が正しくアプリケーションを起動するかどうかの確認を兼ねて、GNOME Files で $HOME/.local/share/applications/ を表示して、作成した netbeans.desktop をダブルクリックして開いてみます。

$HOME/.local/share/applications/ の内容 (1)

すると、「信用できないアプリケーションのランチャー」という警告ダイアログが表示されます。信頼して起動 (L) ボタンをクリックして次へ進みます。

「信用できないアプリケーションのランチャー」の警告ダイアログ

netbeans.desktop ファイルがアイコンで表示されるようになり NetBeans が起動します。

$HOME/.local/share/applications/ の内容 (2)

License Agreement(ライセンスの使用許諾)のダイアログが表示されますので、記載内容 (Apache License 2.0) を確認して合意できれば I Accept ボタンをクリックします。

License Agreement のダイアログ

NetBeans が起動します。

起動中の Apache NetBeans 9.0

Java features limited のダイアログが表示され、nb-javac のインストールするか JDK 9 以降のバージョンを使うようにと書かれています。Install nb-javac ボタンをクリックして次へ進みます。

Java features limited のダイアログ

インストールのダイアログに従って進めて、インストール後に NetBeans を再起動します。

NetBeans が再起動します。

再起動中の Apache NetBeans 9.0

匿名で NetBeans の機能の使用状況を netbeans.org に送って良いか確認のダイアログが表示されます。I AgreeNo, Thank You どちらかのボタンをクリックして次へ進みます。

Usage Statistics のダイアログ

以上で Apache NetBeans 9.0 の最初の起動が確認できました。

起動した Apache NetBeans 9.0

単純な JavaFX のプログラム [5] で、コンパイル、実行できることを確認しました。

Java Version プログラムの実行例

ちなみに、GNOME3 のアプリケーション一覧で Apache NetBeans 9.0 のアイコンが表示されていることを確認できます。

GNOME3 のアプリケーション一覧

参考サイト

  1. Apache NetBeans 9.0 / Apache NetBeans: Apache NetBeans 9.0 download page
  2. A Brief History of NetBeans
  3. Oracleから譲渡されて約2年、Apache財団が「NetBeans 9.0」を正式リリース - 窓の杜 [2018-7-30]
  4. Java 9/10をサポート、「Apache NetBeans(incubating)9.0」リリース | OSDN Magazine [2018-7-31]
  5. bitwalk123/JavaVersion

 

ブログランキング・にほんブログ村へ
にほんブログ村

2018-03-25

Apache NetBeans 9.0 beta

NetBeans 9.0 ベータ版が米国時間 3 月 22 日にリリースされたようです。

NetBeans は、もともと、学生プロジェクトとしてチェコのプラハで誕生した統合開発環境ですが、1999 年に Sun Microsystems 社が買収して翌年オープンソース化されました。その後は Sun Microsystems 社を買収した Oracle 社の所有となっていましたが、2016 年に Apache 財団へ寄贈されました。

現在は、同財団の正式プロジェクトを目指した "インキュベーション" の段階にあります。

Java の統合開発環境については Eclipse がポピュラーですが、JavaFX をプログラミングする際に NetBeans を使い始めて以来、Linux、Windows 両方でメインの開発環境になってしまいましたので、個人的には NetBeans のリリース動向に注目しています。

参考サイト

  1. Downloads / Apache NetBeans
  2. 「Apache NetBeans 9.0」がベータ公開 ~Oracleから寄贈後初の正式リリースを目指す - 窓の杜 [2018-2-19]

 

ブログランキング・にほんブログ村へ
にほんブログ村

2018-03-21

Java 10 リリース

Java 10 が米国時間 3 月 20 日付でリリースされました。今後は Java 9 に対するメンテナンスリリースなどが行われなくなります。そのため、Java 9 のユーザーは速やかな Java 10 へのアップグレードが求められます。また JDK 10 は無償でリリースされる Oracle JDK の最後のメジャーリリースでもあります。今年 9 月にリリースされる予定の Java 11 (LTS) 以降は、OpenJDK からバイナリが無償で提供される予定です。

Java のリリース方法の変更が、大きな混乱を引き起こさずに Java の進化を促進してくれることを願っています。

参考サイト

  1. Java SE - Downloads | Oracle Technology Network | Oracle
  2. JDK 10 GA Release [OpenJDK]
  3. Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了 - Publickey

 

ブログランキング・にほんブログ村へ
にほんブログ村

2018-03-20

【備忘録】JavaFX Spinner の文字表示を右寄せする

JavaFX の Spinner クラスは、アプリケーションの設定値に使用するような数値の微調整をするウィジェット(UI 部品)として重宝しています。しかし、デフォルトでは数値は左寄せで表示されます。数値なので右寄せに表示したいのですが、いつもやり方を忘れてしまい、しばらく試行錯誤したりインターネット上を探し回ります。

直感的に覚えにくい仕様だ、というのは言い訳に過ぎず、きっと真剣に覚える気が無いせいでしょう。そんな自分の為に備忘録としてごくごく簡単なサンプルを示しておきました。

使用した環境は以下の通りです。

OS
Fedora 27 (x86_64)
Java
java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64
JavaFX
openjfx-8.0.152-12.b04.fc27.x86_64
IDE
NetBeans IDE Dev (Build 201703170002)

 

下記は、デフォルトと右寄せ表示の Spinner ウィジェットを縦に並べて表示するサンプルです。

リスト:SpinnerTest.java 
package spinnertest;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class SpinnerTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();
        Spinner<Integer> spinner1 = new Spinner<>();
        SpinnerValueFactory<Integer> valueFactory1 = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 10, 5);
        spinner1.setValueFactory(valueFactory1);
        root.getChildren().add(spinner1);

        Spinner<Integer> spinner2 = new Spinner<>();
        SpinnerValueFactory<Integer> valueFactory2 = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 10, 5);
        spinner2.setValueFactory(valueFactory2);
        spinner2.getEditor().setAlignment(Pos.CENTER_RIGHT);
        root.getChildren().add(spinner2);

        Scene scene = new Scene(root);

        primaryStage.setTitle("Spinner Test");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

実行例を以下に示します。

SpinnerTest.java の実行例

参考サイト

  1. Spinner (JavaFX 8)

 

ブログランキング・にほんブログ村へ
にほんブログ村