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

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

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

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

Q&A

解決済

2回答

7638閲覧

JAVAのエラーの解決方法がわからないです

Alpa

総合スコア80

Java

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

0グッド

0クリップ

投稿2017/08/05 12:11

編集2017/08/05 12:13

Javaの質問で以下のプログラムをコマンドプロントでコンパイルすると
コンパイルは通るのですが実行してテンキーじゃない1や2や3を押した時に
以下のエラーが出ます

どうしたらいいのでしょうか?
回答お願いします

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MyFrame.processKeyEvent(MyFrame.java:36)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

JAVA

1import javax.swing.JFrame; 2import javax.swing.JLabel; 3import java.awt.Color; 4import java.awt.Font; 5import java.awt.Image; 6import javax.swing.JPanel; 7import java.io.File; 8import java.awt.image.BufferedImage; 9import javax.imageio.ImageIO; 10import javax.swing.ImageIcon; 11 12public class MyFrame extends JFrame 13{ 14 15 JLabel jlMsg; 16 17 public MyFrame()throws java.io.IOException//コンストラクタ化 18 { 19 20 setBounds(20,40,940,540);//フレームサイズ変更 21 setDefaultCloseOperation(EXIT_ON_CLOSE);//×ボタン有効化 22 add(createBasePanel());//親パネル作成しフレームに貼り付け 23 setVisible(true);//フレームを表示状態へ 24 25 enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);//キー入力有効化 26 27 } 28 29 protected void processKeyEvent(java.awt.event.KeyEvent e) 30 { 31 if(e.getID()==java.awt.event.KeyEvent.KEY_PRESSED){ 32 System.out.println("キー"+e.getKeyCode()+"が押されました"); 33 if(e.getKeyCode()==java.awt.event.KeyEvent.VK_1){ 34 jlMsg.setText("魔王と戦い勝利しました"); 35 } 36 if(e.getKeyCode()==java.awt.event.KeyEvent.VK_2){ 37 jlMsg.setText("修行して強くなった"); 38 } 39 if(e.getKeyCode()==java.awt.event.KeyEvent.VK_3){ 40 jlMsg.setText("宿屋に泊まった"); 41 } 42 } 43 } 44 45 //基盤パネルを作成 46 JPanel createBasePanel()throws java.io.IOException 47 { 48 JPanel jp=createPanel(Color.BLACK); 49 50 //フォントを作成 51 Font f=new Font(Font.MONOSPACED,Font.BOLD,40); 52 53 54 //レイアウト1行目 55 //パネルを作成し親パネルに貼り付け 56 JPanel jpChild=createPanel(Color.BLUE);//小パネル作成 57 jp.add(jpChild);//親パネルにパネル追加 58 59 //ラベルを作成し子パネルに貼り付け 60 JLabel jlChild=new JLabel(player.getStatusString());//文字列作成 61 jlChild.setFont(f);//文字サイズ変更 62 jlChild.setForeground(Color.WHITE);//文字色設定 63 jpChild.add(jlChild);//子パネルに文字追加 64 65 66 //レイアウト2行目 67 68 //可変表示パネル 69 JPanel jpChild2=createPanel(Color.CYAN);//小パネル作成 70 jp.add(jpChild2);//親パネルにパネル追加 71 72 //選択肢をパネルに貼り付け 73 JLabel jlMain=new JLabel( 74 "<html>1.すぐに魔王を倒しに行く<br>2.修行する<br>3.宿屋に泊まる" 75 ); 76 jlMain.setFont(f); 77 jpChild2.add(jlMain); 78 79 //モンスターをパネルに貼り付け 80 81 File file1=new File("[Monster]Bat_pochi.jpg");//コウモリのファイル読み込み 82 BufferedImage ba1=ImageIO.read(file1);//コウモリ画像全体を読み込む 83 84 File file2=new File("[Monster]Goblin1_tapis.jpg");//ゴブリンのファイル読み込み 85 BufferedImage ba2=ImageIO.read(file2);//ゴブリン画像全体を読み込む 86 87 File file3=new File("[Monster]Slime1_pochi.jpg");//スライムのファイル読み込み 88 BufferedImage ba3=ImageIO.read(file3);//スライム画像全体を読み込む 89 90 int cw=32;//セルサイズ/幅 91 int ch=48;//セルサイズ・高さ 92 int sw=32*4;//表示サイズ・幅 93 int sh=48*4;//表示サイズ・高さ 94 /* 95 suraimu(jpChild2,ba3,0,0,cw,ch,sw,sh);//スライム表示の関数を呼び出して村人の正面の画像を表示する 96 koomori(jpChild2,ba1,0,0,cw,ch,sw,sh);//コウモリ表示の関数を呼び出して村人の正面の画像を表示する 97 goburinn(jpChild2,ba2,0,0,cw,ch,sw,sh);//ゴブリン表示の関数を呼び出して村人の正面の画像を表示する 98*/ 99 100 //レイアウト3行目 101 //ラベルを作成し親パネルに貼り付け 102 JLabel jlMsg=new JLabel("魔王が世界を滅ぼそうとしています");//文字入力 103 jlMsg.setFont(f);//文字サイズ変更 104 jlMsg.setForeground(new Color(255,128,0));//文字色設定 105 jp.add(jlMsg);//ウィンドウに文字追加 106 107 System.out.println("プログラムを全て読み込みましました!");//読み込み確認 108 return(jp); 109 110 } 111 112 113 114 //ここより以降は関数作成コード 115 116 //パネルを作成し背景色を設定する関数 117 JPanel createPanel(Color c) 118 { 119 JPanel jp=new JPanel(); 120 jp.setBackground(c); 121 return(jp); 122 } 123 124 /* 125 126 @param jpChild2 表示対象パネル 127 @param ba0,1,2,3 画像全体 128 @param x 表示する座標X 129 @param y 表示する座標Y 130 @param cw セルの大きさ・幅 131 @param ch セルの大きさ・高さ 132 @param sw 表示サイズ・幅 133 @param sh 表示サイズ・高さ 134 135 */ 136 137 void koomori(JPanel jpChild2,BufferedImage ba1,int x,int y,int cw,int ch,int sw,int sh)//コウモリ表示関数作成 138 { 139 BufferedImage bs1=ba1.getSubimage(cw*x,ch*y,cw,ch); 140 //画像サイズ192*192に変更した画像の左端に切り取り 141 Image im=bs1.getScaledInstance(sw,sh,Image.SCALE_DEFAULT); 142 ImageIcon ii=new ImageIcon(im);//JLabelように型変換 143 JLabel jlImage=new JLabel(ii);//画像部品を作成 144 jlImage.setSize(sw,sh);//画像部品の座標とサイズ変更 145 jpChild2.add(jlImage);//親パネルに画像貼り付け 146 } 147 148 void goburinn(JPanel jpChild2,BufferedImage ba2,int x,int y,int cw,int ch,int sw,int sh)//ゴブリン表示関数作成 149 { 150 BufferedImage bs2=ba2.getSubimage(cw*x,ch*y,cw,ch); 151 //画像サイズ192*192に変更した画像の左端に切り取り 152 Image im=bs2.getScaledInstance(sw,sh,Image.SCALE_DEFAULT); 153 ImageIcon ii=new ImageIcon(im);//JLabelように型変換 154 JLabel jlImage=new JLabel(ii);//画像部品を作成 155 jlImage.setSize(sw,sh);//画像部品の座標とサイズ変更 156 jpChild2.add(jlImage);//親パネルに画像貼り付け 157 } 158 159 void suraimu(JPanel jpChild2,BufferedImage ba3,int x,int y,int cw,int ch,int sw,int sh)//スライム表示関数作成 160 { 161 BufferedImage bs3=ba3.getSubimage(cw*x,ch*y,cw,ch); 162 //画像サイズ192*192に変更した画像の左端に切り取り 163 Image im=bs3.getScaledInstance(sw,sh,Image.SCALE_DEFAULT); 164 ImageIcon ii=new ImageIcon(im);//JLabelように型変換 165 JLabel jlImage=new JLabel(ii);//画像部品を作成 166 jlImage.setSize(sw,sh);//画像部品の座標とサイズ変更 167 jpChild2.add(jlImage);//親パネルに画像貼り付け 168 } 169 170} 171 172別プログラム 173public class part18 174{ 175 176 public static void main(String[] args)throws java.io.IOException 177 { 178 179 System.out.println("正常に起動しました!");//起動確認 180 new MyFrame(); 181 182 } 183} 184

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

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

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

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

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

guest

回答2

0

ベストアンサー

Java

1public class MyFrame extends JFrame 2{ 3 4 JLabel jlMsg;

上記の変数jlMsgの宣言がありますが、

Java

1 //レイアウト3行目 2 //ラベルを作成し親パネルに貼り付け 3 JLabel jlMsg=new JLabel("魔王が世界を滅ぼそうとしています");//文字入力 4 jlMsg.setFont(f);//文字サイズ変更 5 jlMsg.setForeground(new Color(255,128,0));//文字色設定 6 jp.add(jlMsg);//ウィンドウに文字追加

上記でも、同じ名前の変数jlMsgが宣言されています。

よって、最初のjlMsgに値が代入されない(=nullのまま)ため、エラーが出たということになります。

投稿2017/08/05 12:44

fiveHundred

総合スコア9796

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

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

Alpa

2017/08/05 12:46

ご丁寧な回答ありがとうございました しっかりと実行できました
guest

0

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MyFrame.processKeyEvent(MyFrame.java:36)

NullPointerExceptionはNullになっているポインターを使ったエラーです。
MyFrame.java:36 MyFrame.javaの36行目でエラーです。

投稿2017/08/05 12:32

maiko0318

総合スコア876

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

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

Alpa

2017/08/05 12:42 編集

その部分をどう変えたらいいのでしょうか? 初心者過ぎてすいません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問