Javaで簡単なピアノを演奏するプログラムを作成しています。
初心者なので、色々経験を積んでいく最中です。
他にも、ブロック崩しも並行で作成中なんですが、Javaでピアノ演奏のアプリケーションも
おもしろそうだと思ったので、この期に作ろうと思いました。
それで、フレームの表示(フレームを経由してキーボードの情報を受けてます)と、キーリスナーの
実装、サウンド用のAudioClipの変数も用意しました(多数入れるので、配列の形で用意してます)
その後、AudioClipの変数の中に、wavファイルを指定して、ここで一旦実行結果を確認しようと思いコンパイラしたのですが、フレームの表示はOK、キーの入力もOKだったんですが、なぜか音が出なかく、代わりにエラーが出ました。
そのエラーの内容が下記です。
==================================
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Sound.keyPressed(Sound.java:26)
at java.awt.Component.processKeyEvent(Component.java:6247)
at java.awt.Component.processEvent(Component.java:6066)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Window.processEvent(Window.java:1836)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja
va:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard
FocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo
ardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo
ardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc
usManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4524)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
==================================
以上が、出力されたエラーの内容です。
Javaのファイル名は、Mainframe(メインファイル)、Soundファイルです。
今度文化祭の方で出展しようかと思っているんですが、時間が無いためちょっと焦ってます。
恐らく、いくつか必要な情報が抜けてるかと思いますが、指摘を頂ければその都度記載させて頂きます。乱文で申し訳ございませんが、ご教授の方宜しくお願い致します。
お礼
pcbeginnerさんの仰っておられるとおり、nullへの参照が原因でした。 まだまだ初心者なので、こういうことを度重ねて学習していきたいと思っています。 ご回答ありがとうございました。