質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

4871閲覧

なんでNullPointerExceptionになるのかわからない。

mr0237

総合スコア164

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/02/05 14:18

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/02/05 14:24

エラーログを貼りましょう
guest

回答2

0

NullPointerExceptionはインスタンスを参照していない参照型変数を使用すると発生します。
NullPointerExceptionは大抵プログラマーのミスです。回避するではなく、発生させないようにしないといけません。

また、エラーが発生するならエラーログを質問に載せないと時間の無駄ですよ。

投稿2017/02/05 14:24

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

startメソッドはウィンドウが開くときに呼ばれてしまうメソッドです。
その先頭でいきなりfilepathを使ってファイルを開こうとしていますが、あなたはまだボタンを押しておらず、FileChooserでファイルを開くという手順を踏んでいません。なので、まだfilepathがnullなままでFileInputStreamを作ろうとしたため、NullPointerExceptionが発生しています。以下の部分をhandleの中に持っていったら動くと思います。

Java

1 FileInputStream fis = null; 2 try{ 3 fis = new FileInputStream(filepath); 4 }catch(IOException e){ 5 Alert keikoku = new Alert(Alert.AlertType.ERROR); 6 keikoku.setContentText("ファイルが読み込めません"); 7 }finally{ 8 if(fis != null){ 9 try { 10 fis.close(); 11 } catch (Exception e) { 12 } 13 } 14 } 15 Image image = new Image(fis); 16 ImageView imageView = new ImageView(image); 17 imageView.setFitHeight(500); 18 imageView.setFitWidth(1000);

投稿2017/02/06 00:30

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mr0237

2017/02/07 13:43

ありがとうこざいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問