2017-06-20 11 views
0

以下は、私が一緒に画像とキャプションテキストを表示するために使用コードです:画像:JavaFXの

try 
        { 
         Scanner scanner = new Scanner(new File("data.txt")); 
         String text = scanner.useDelimiter("ENDOFFILE").next(); 
         scanner.close(); // Put this call in a finally block 
         System.out.println(text); 
         String[] data = text.split("\n"); 
         for(int i=0;i<data.length;i++) 
         { 
          if(i%2==0) 
          { 
           System.out.println("This is "+data[i]); 
           Image img = new Image(new File(data[i]).toURI().toString(), 100, 0, false, false); 
           ImageView selectedImage = new ImageView(); 
           selectedImage.setImage(img); 
           v.getChildren().addAll(selectedImage); 
          } 
          else 
          { 
           Text t = new Text(data[i]); 
           t.setFont(Font.font("Tahoma", FontWeight.NORMAL, 14)); 
           v.getChildren().add(t); 
          } 
         } 
        } 
        catch(Exception E) 
        { 
         E.printStackTrace(); 
        } 
        root2.getChildren().add(v); 
        Scene scene = new Scene(root2, 1000, 1000); 
        stage.setScene(scene); 
        stage.show(); 
} 

data[i]画像については、プログラムと同じディレクトリ内に存在するUdiagram.jpgです。例外は発生しませんが、イメージは表示されません。空白で表示され、テキストはText goes hereと表示されます。次のように

ファイルdata.txtは次のとおりです。

UDiagram.jpg 
Hit and Run 
ENDOFFILE 

画像だけでテキストを表示しない理由何ができますか?

+0

'new File(...)は、ほとんどまたはまったく制御できない*作業ディレクトリ*に関連するファイルを解決します。 (ほとんどのIDEは作業ディレクトリをプロジェクトディレクトリにしますが、それは設定可能ですが、アプリケーションがデプロイされ実行されたときには明らかに異なることがあります)。これらのファイルがアプリケーションの一部である場合(つまり、jarファイルにバンドルされる場合)、クラスローダーを介してリソースとしてロードする必要があります。 (あなたの 'data.txt'ファイルについても同じことが言えます)あなたが作成しようとしているものを見るためにあなたが作成したURLをいつも表示することができます。 –

答えて

0

ファイル名とフォルダ名を文字列の先頭に連結する必要があると思います。

Image image = new Image("file:FOLDER_NAME/imageName.gif"); 
ImageView imageView = new ImageView(); 
imageView.setImage(image); 

imageView.setFitWidth(100); 
imageView.setPreserveRatio(true); 
imageView.setSmooth(true); 
関連する問題