前提・実現したいこと
初心者です。
javaでRPGゲームを作成しようとしています。
まずは、四角の図形がフィールド内でキー入力に対してただ平面上を移動する程度のプログラミングを書いたつもりですが、以下のエラーメッセージが発生しました。
以前使っていたいたPCで同じコードを実行すると正常に動くのですが、新しいPCで同じ実行したところこのエラーが出てしまいました。
どこを修正すればよいか、教えていただけると幸いです。
(前のPCは近々手放すので、今のPCで動かす方法をしておきたい次第です。)
使っているJAVA開発環境やOSの違いが関係しているかもと思ったので、それらの情報を最後に載せておきます。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 型 Component のメソッド addKeyListener(KeyListener) は引数 (RenderingHints.Key) に適用できません 型 RenderingHints.Key のインスタンスを生成できません at sample2.SampleClass.main(SampleClass.java:45) (→ ソースコード欄内のframe.addKeyListener(new Key() ); の部分がエラーの該当箇所ですが、このサイトにコピペするときに自分向けのコメントを削除しているので実際は45行目ではなくなっています。)
該当のソースコード
java
1package sample2; 2 3import java.awt.RenderingHints.Key; 4 5import javax.swing.JFrame; 6 7 8 9public class SampleClass{ 10 11 public static void main(String args[]) { 12 13 final int height = 1000;//後に他のクラスで設定するフィールドの画面サイズ 14 final int width =1000;//後に他のクラスで設定するフィールドの画面サイズ 15 final String titleName = "title";////フィールドの画面の名前 16 17 JFrame frame = new JFrame(titleName); 18 19 20 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 21 frame.setSize(width, height); 22 frame.setVisible(true); 23 24 25 26 MyJPanel myJPanel = new MyJPanel(); 27 frame.getContentPane().add(myJPanel); 28 29 myJPanel.setBounds(0,0, width, height); 30 31 32 frame.addKeyListener(new Key() ); 33 myJPanel.game(width, height); 34 } 35 36} 37 38--------------------------------------------------------------------------------------------- 39package sample2; 40 41import java.awt.Color; 42import java.awt.Graphics; 43import java.awt.Image; 44 45import javax.swing.JPanel; 46 47public class MyJPanel extends JPanel{ 48 Player player = new Player(0,0); 49 50 public void game(int width, int height) { 51 52 Image fieldimg = createImage(width, height); 53 54 Graphics fieldgraphic = fieldimg.getGraphics(); 55 56 Graphics wg = getGraphics(); 57 58 int x=200; 59 int y=200; 60 61 while(true){ 62 fieldgraphic.setColor(Color.WHITE); 63 fieldgraphic.fillRect(0,0,width, height); 64 65 //追加! 66 player.move(); 67 player.draw(fieldgraphic); 68 69 wg.drawImage(fieldimg, 0, 0, this); 70 try { 71 Thread.sleep(10); 72 } catch (InterruptedException e) { 73 e.printStackTrace(); 74 } 75 } 76 } 77} 78 79----------------------------------------------------------------------------------------------- 80 81package sample2; 82 83import java.awt.event.KeyEvent; 84import java.awt.event.KeyListener; 85 86public class Key implements KeyListener{ 87 88 static boolean up = false; 89 static boolean down = false; 90 static boolean right = false; 91 static boolean left = false; 92 static boolean enter = false; 93 94 @Override 95 public void keyPressed(KeyEvent e) { 96 97 if (e.getKeyCode() == KeyEvent.VK_UP) { 98 99 up = true; 100 } 101 if (e.getKeyCode() == KeyEvent.VK_DOWN) { 102 down = true; 103 } 104 if (e.getKeyCode() == KeyEvent.VK_LEFT) { 105 left = true; 106 } 107 if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 108 right = true; 109 } 110 111 if(e.getKeyCode() == KeyEvent.VK_ENTER) { 112 enter = true; 113 } 114 } 115 116 @Override 117 public void keyReleased(KeyEvent e) { 118 119 if (e.getKeyCode() == KeyEvent.VK_UP) { 120 up = false; 121 } 122 if (e.getKeyCode() == KeyEvent.VK_DOWN) { 123 down = false; 124 } 125 if (e.getKeyCode() == KeyEvent.VK_LEFT) { 126 left = false; 127 } 128 if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 129 right = false; 130 } 131 if (e.getKeyCode() == KeyEvent.VK_ENTER){ 132 enter = false; 133 } 134 } 135 136 @Override 137 public void keyTyped(KeyEvent e) { 138 139 } 140} 141 142----------------------------------------------------------------------------------------------- 143 144package sample2; 145 146import java.awt.Color; 147import java.awt.Graphics; 148 149public class Player { 150 151 int x; 152 int y; 153 154 Player(int x, int y){ 155 this.x = x; 156 this.y = y; 157 } 158 159 public void move(){ 160 if(Key.up){ 161 y -= 5; 162 } 163 if(Key.down){ 164 y += 5; 165 } 166 if(Key.right){ 167 x += 5; 168 } 169 if(Key.left){ 170 x -= 5; 171 } 172 } 173 174 public void draw(Graphics g){ 175 g.setColor(Color.GREEN); 176 g.fillRect(x,y,50,50); 177 } 178} 179 180
試したこと
補足情報(FW/ツールのバージョンなど)
【OS】
(うまく動作した古いPC)
WINDOWS 7
(今回エラーが出た新しいPC)
WINDOWS 10 Home
バージョン:1909
【Java開発環境】
(古いPC)
Eclipse IDE for Enterprise Java Developers.
Version: 2018-12 (4.10.0)
(新しいPC)
Eclipse IDE for Enterprise Java Developers.
Version: 2020-03 (4.15.0)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。