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

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

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

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

Q&A

解決済

3回答

3160閲覧

KeyListnerがimplementsできない

OMDM1991

総合スコア25

Java

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

0グッド

0クリップ

投稿2015/09/13 12:17

編集2015/09/14 11:40

以下のコードでコンパイルしようとしても、
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}

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

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

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

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

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

guest

回答3

0

keyTypedが実装されていません
interfaceのメソッドはすべて実装されなければいけません
https://docs.oracle.com/javase/jp/6/api/java/awt/event/KeyListener.html

投稿2015/09/13 12:34

_nyannyan_

総合スコア124

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

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

OMDM1991

2015/09/14 11:43

回答有難うございます。keyTypedを加えてみましたが相変わらずエラーが出てしまいます。まだ改善が足りていないのでしょうか? コードを編集・更新しました。
guest

0

KeyListnerでなく、KeyListenerでは?

Tracking.java:56: エラー: シンボルを見つけられません class Key extends JPanel implements KeyListner{ ^ シンボル: クラス KeyListner

とあるように、KeyListnerというインタフェースはありません。
java.awt.event.KeyListenerの間違いと思います。

投稿2015/09/14 11:46

eripong

総合スコア1546

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

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

OMDM1991

2015/09/14 17:39

丁寧に回答して頂き有難うございました。
guest

0

ベストアンサー

KeyListnerが誤字です。tの後ろにeが足りません。
KeyListenerが正しいです。

投稿2015/09/14 11:46

argius

総合スコア9388

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

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

OMDM1991

2015/09/14 17:38

その通りです。お恥ずかしいです。親切な回答有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問