2017-01-30 21 views
0

私のプログラムはファイルから画像をアップロードし、その画像を背景として表示します。私の問題は、パラメータの中にImageというオブジェクトを作成すると、配置しようとしているファイルを尋ねるということです。 Fileオブジェクトをパラメータの中に入れようとしましたが、動作しません。私を助けてください。私は立ち往生している。JavaFXのFileChooserから画像を開く

public class FileOpener extends Application{ 

    public void start(final Stage stage) { 
     stage.setTitle("File Chooser Sample"); 

     final FileChooser fileChooser = new FileChooser(); 

     final Button openButton = new Button("Choose Background Image"); 
     openButton.setOnAction((final ActionEvent e) -> { 
      File file = fileChooser.showOpenDialog(stage); 
      if (file != null) { 
       // openFile(file); 

       // where my problem is 
       Image image1 = new Image("file"); 
       // what I tried to do 
        // Image image1 = new Image(file); 
       ImageView ip = new ImageView(image1); 
       BackgroundSize backgroundSize = new BackgroundSize(100, 100, true, true, true, false); 
       BackgroundImage backgroundImage = new BackgroundImage(image1, BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, backgroundSize); 
      } 
     }); 
     final StackPane stac = new StackPane();  
     stac.getChildren().add(openButton); 
     stage.setScene(new Scene(stac, 500, 500)); 
     stage.show(); 
    } 

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

答えて

3

問題は、あなたがそれをFileを渡しているのに対し、Imageのコンストラクタは、String urlを期待しているということです。良いIDEは、与えられたメソッドがそのパラメータとして期待していることを教えてくれます。キーボードショートカットを見つけて使用します(IntelliJのCtrl + P)。そこから、FileをそのURLを表すStringに変換する方法があります。あなたが実際にあなたの背景画像を設定することはありません注

Image image1 = new Image(file.toURI().toString()); 

、あなたはラムダに次の行を追加する必要があります:この場合は、このかかわらずのために

stac.setBackground(new Background(backgroundImage)); 

を、あなたが移動する必要がありますアクションリスナーの上にstacの宣言があります。

関連する問題