2015-01-08 4 views
5

私はウィンドウ内にjavaFxのアプリケーションwhit複数の画像を書こうとしています。
短い話は、私がCandyという名前のenumクラスを持っていて、それぞれのキャンディがそれを表す画像ファイルへのいくつかのプロパティとパスを持っていることです。
javafx.applicationクラス(Table)のコンストラクタで、私はそれらの画像を配列リストを埋めるためにしたいので、私はこれまでのところ、これを書いた: 今
内部グラフィックスはまだ初期化されていません:javafx

public class Table extends Application { 

    ArrayList<Image> images; 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     primaryStage.setTitle("CandyFx"); 
     primaryStage.show(); 
    } 

    public Table() { 
     images = new ArrayList<Image>(); 
     for (Candy candy : Candy.values()) { 
      File file = new File (candy.getImagePath()); 
      Image image = new Image(file.toURI().toString()); 
      images.add(image); 
     } 
    } 
} 

私はのインスタンスを作成するたびに、 Tableクラスの場合、アプリケーションはjava.lang.RuntimeException: Internal graphics not initialized yetをスローします。
初期のグラフィックはどのように見えますか? Linuxを使用している場合、すべての

+0

のJavaFXの問題追跡に関連するコメントを参照してください:[「内蔵グラフィックスが」初期化されるまで、RT-30796は、JavaFXのイメージを作成できません](https://javafx-jira.kenai.com/browse/RT-30796 )。 – jewelsea

+1

また、Tableクラスのインスタンスを手動で作成することは絶対にしないでください(たとえば、 'new Table()'を書かないでください)。テーブルインスタンスはJavaランチャによって作成されます。JavaFXアプリケーションの詳細については、[JavaFX Application documentation](http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html)を参照してください。ライフサイクル。また、[JavaFXアプリケーションは複数回起動できません](http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#launch-java.lang.String ..) .-)。 – jewelsea

+0

@jewelseaありがとうございます。しかし、もし私が別の関数から呼び出されたいという、私のアプリケーションに(画面上の何かの位置を変更するメソッドのような)特別なメソッドをいくつか持たせたいのであればどうしますか? (作成したインスタンスでメソッドを呼び出すことができないため) – AliLotfi

答えて

4

まず、GTK 2.18は画面がnull .Tryがstartメソッドの内部であなたのイメージを作成するときはいつでも、この例外がスローされます

libswt-gtk-3-java 

インストールするのJavaFX .tryを実行するために必要です。 primaryStage.show();の直前。

は、私はそれが正確にどのように動作するかわかりませんが、我々は最初に私達の開始にJFXPanelを作成するとき、私たちはもうエラーを得ることはありませんあまりにも

http://cr.openjdk.java.net/~vadim/RT-33475/webrev.00/modules/graphics/src/main/java/com/sun/glass/ui/Screen.java.html

0

をこのリンクを見てみましょう。

JFXPanel jfxPanel = new JFXPanel(); 
+0

fxアプリケーションスレッドを暗黙的に開始します。 – kleopatra

関連する問題