JAVAの初心者です。練習でJavaFXを使ってボタンを押して選択ダイアログを出して、画像を表示するプログラムを作りたいのですが、一応コードは選択ダイアログから画像を選択すると、画像を表示するところまで書いたのですが、今度は画像が表示されません。画像を表示するにはどうすればいいのでしょうか?
Java
1 2 3package rensyuuyou; 4 5import java.io.*; 6import java.util.logging.Level; 7import java.util.logging.Logger; 8 9import javafx.application.Application; 10import javafx.event.ActionEvent; 11import javafx.event.EventHandler; 12import javafx.geometry.Insets; 13import javafx.geometry.Pos; 14import javafx.scene.Scene; 15import javafx.scene.control.Button; 16import javafx.scene.layout.VBox; 17import javafx.stage.Stage; 18import javafx.stage.FileChooser; 19import javafx.scene.image.Image; 20import javafx.scene.image.ImageView; 21import javafx.stage.FileChooser; 22import javafx.scene.control.Alert; 23 24 25public class Rensyuuyou extends Application { 26 27 String filepath; 28 VBox imageBox = new VBox(); 29 30 31 @Override 32 public void start(Stage stage) { 33 stage.setTitle("練習用"); 34 stage.setWidth(2000); 35 stage.setHeight(1000); 36 37 Button botan = new Button("画像表示"); 38 botan.setPrefSize(900, 30); 39 botan.setOnAction(new EventHandler<ActionEvent>() { 40 41 @Override 42 public void handle(ActionEvent event) { 43 44 FileChooser fileChooser = new FileChooser(); 45 fileChooser.setTitle("画像を開く"); 46 fileChooser.getExtensionFilters().addAll( 47 new FileChooser.ExtensionFilter("イメージファイル", "*.jpg", "*.png")); 48 File file = fileChooser.showOpenDialog(stage); 49 filepath = file.getAbsolutePath(); 50 /* 51 画像を表示する 52 */ 53 FileInputStream fis = null; 54 try{ 55 fis = new FileInputStream(filepath); 56 }catch(IOException e){ 57 Alert keikoku = new Alert(Alert.AlertType.ERROR); 58 keikoku.setContentText("ファイルが読み込めません"); 59 60 61 }finally{ 62 if(fis != null){ 63 try { 64 fis.close(); 65 } catch (Exception e) { 66 } 67 } 68 } 69 Image image = new Image(fis); 70 ImageView imageView = new ImageView(image); 71 imageView.setFitHeight(500); 72 imageView.setFitWidth(1000); 73 74 imageBox.setAlignment(Pos.TOP_CENTER); 75 imageBox.setPadding(new Insets(40, 40, 40, 40)); 76 imageBox.getChildren().addAll(imageView); 77 78 } 79 }); 80 VBox hyouji = new VBox(); 81 hyouji.setAlignment(Pos.CENTER); 82 hyouji.setPadding(new Insets(30, 30, 30, 30)); 83 hyouji.getChildren().addAll(imageBox,botan); 84 85 stage.setScene(new Scene(hyouji)); 86 stage.show(); 87 88 89 90 } 91 92 public static void main(String[] args) { 93 launch(args); 94 } 95 96} 97 98
(追記)すいません。違うソースコードを上げてしまいました。アップしたのでよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー