ともさんのHP >プロブラミング >JavaFX >コントロールの初期化

【JavaFX】コントロールを初期化できないエラー

ボタンなどのコントロールを初期化しようとするとjava.lang.ExceptionInInitializerErrorというエラーが表示される、
Imageを初期化するとInternal graphics not initialized yetというエラーが出てしまう場合の対処法です。
このエラーで困ることはおそらくないと思うのですが、嵌まってしまって原因がなかなかつかめなかったのでメモ書き。
サンプルプログラム

広告


原因

Applicationクラスの外でjavafx.scene.control.Buttonなどのコントロールやjavafx.scene.image.Imageを初期化しようとするようです。
JavaFXのコントロールはApplicationの中で使うのが当然なのですが、私の場合、Swingで作ったアプリに、JavaFX楽天 のコントロールを使ったJframeを追加したときに発生しました。
エラーが発生するように超単純にサンプルプログラムを書くとこうなります。

package tomojavalib.fx;

import javax.swing.Jframe;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;

public class FxFrame4 extends Jframe {

public FxFrame4(){
 this.setBounds(50,50,320,240);
 this.setBackground(java.awt.Color.WHITE);
 Image image = new Image("file:D:test.png");
 Button b = new Button("test");
 JFXPanel fxPanel = new JFXPanel();
 Group group = new Group();
 group.getChildren().add(b);
 Scene  scene  =  new  Scene( group );
 fxPanel.setScene(scene);
 this.add(fxPanel);
 this.setVisible(true);
}

public static void main(String[] args) {
 FxFrame4 f = new FxFrame4();
}

}

SwingのJframeを作り、その中で Java 楽天 FXのコントロールを利用するためにjavafx.embed.swing.JFXPanelを置いています。
こうすることでjavafx.scene.control.ButtonなどのコントロールをSwing内で利用できるようになります。

解決方法

Image、Button、JFXPanelの順で初期化していますが、この順番を変えます。

Image image = new Image("file:D:test.png");
Button b = new Button("test");
JFXPanel fxPanel = new JFXPanel();

JFXPanelを先に初期化してしまえばエラーは発生しません。

JFXPanel fxPanel = new JFXPanel();
Image image = new Image("file:D:test.png");
Button b = new Button("test");

当初はJFXPanelを先に初期化していてエラーの発生はなかったのですが、いつの間にか入れ替わってしまい、原因がわからず悩みました。

最終更新日: 2017-07-14 05:14:36

ともさんのHP >プロブラミング >JavaFX >コントロールの初期化

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます