以下のコードでコンパイルしようとしても、
Tracking.java:56: エラー: シンボルを見つけられません
class Key extends JPanel implements KeyListner{
^
シンボル: クラス KeyListner
Tracking.java:66: エラー: 不適合な型: KeyをKeyListenerに変換できません:
addKeyListener(this);
となってしまいます。
どうしてエラーが出てしまうのでしょうか?また、どう改善すれば正常にコンパイルできるでしょうか?
java
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5public class Tracking { 6 public static void main(String[] args) { 7 JFrame frame = new JFrame(); 8 9 frame.setTitle("GS"); 10 frame.setSize(1000, 1000); 11 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 12 MainPanel panel = new MainPanel(); 13 frame.getContentPane().add(panel); 14 frame.setVisible(true); 15 } 16} 17 18class MainPanel extends JPanel implements Runnable { 19 //B1 20 public static int x1 = 10; 21 public static int y1 = 300; 22 public static int vx1 = 10; 23 public static int vy1 = 0; 24 25 public MainPanel() { 26 // 10ミリ秒ごとに画面を書き換える 27 Thread refresh = new Thread(this); 28 refresh.start(); 29 } 30 31 public void paintComponent(Graphics g) { 32 super.paintComponent(g); 33 // アニメーション 34 if(Key.upPressed = true){y1 += -10;} 35 if(Key.downPressed = true){y1 += 10;} 36 37 //描画 38 x1 += (vx1 / 10); y1 += (vy1 / 10); 39 g.setColor(Color.red); 40 g.fillOval(x1, y1, 20, 20); 41 } 42 43 // 10ミリ秒ごとに再描画 44 public void run(){ 45 while(true){ 46 repaint(); 47 try { 48 Thread.sleep(10); 49 } 50 catch(Exception e){ 51 } 52 } 53 } 54} 55 56class Key extends JPanel implements KeyListner{ 57 //キーコード 58 private int KeyCode; 59 60 //キーの状態 61 public static boolean upPressed; 62 public static boolean downPressed; 63 64 public Key(){ 65 this.setFocusable(true); 66 addKeyListener(this); 67 } 68 69 public void keyPressed(KeyEvent e){ 70 //キーコード取得 71 KeyCode = e.getKeyCode(); 72 //System.out.println(KeyCode + "pressed"); 73 switch(KeyCode){ 74 case 38:upPressed = true;break; 75 case 40:downPressed = true;break; 76 } 77 } 78 public void keyReleased(KeyEvent e){ 79 //キーコード取得 80 KeyCode = e.getKeyCode(); 81 //System.out.println(KeyCode + "released"); 82 switch(KeyCode){ 83 case 38:upPressed = false;break; 84 case 40:downPressed = false;break; 85 } 86 } 87 public void keyTyped(KeyEvent e){} 88}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/14 11:43