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