2012-09-13 46 views
1

我想在我的代碼使用的KeyListener ....但它不工作時,KeyListener的沒有響應我想......的KeyListener的Java

如果你們看到什麼問題,請告訴我。我不知道爲什麼它不起作用。 在此先感謝。

這是代碼。

import javax.swing.*; 
import java.awt.*; 
import java.util.Scanner; 

public class Main extends JFrame { 
    static void drawFrame(JFrame frame) { 

     frame.setSize(610, 805); 
     frame.setLocation(145, 15); 
     frame.setResizable(false); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 

    public static void main(String[] args) { 

     JFrame frame = new JFrame("PacMan"); 
     drawFrame(frame); 
     MyPanel panel = new MyPanel(); 
     panel.setBounds(00, 00, 610, 800); 
     frame.setLayout(null); 
     frame.getContentPane().setLayout(null); 
     frame.getContentPane().add(panel); 
    } 
} 

MyPanel類

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class MyPanel extends JPanel implements KeyListener { 

    private int xpac = 285, ypac = 570; 

    public MyPanel() { 
     this.requestFocus(); 
     this.requestFocusInWindow(); 
    } 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     drawMap1(g); 
     drawPacman(g); 
     addKeyListener(this); 
    } 

    void drawMap1(Graphics g) { 

     BufferedImage image = null; 
     try { 
      image = ImageIO.read(new File("pacmap1.png")); 
     } catch (IOException e) { 
      System.out.println("Can't find the Image."); 
     } 
     setBackground(Color.BLACK); 
     g.drawImage(image, 0, 0, null); 
    } 

    void drawPacman(Graphics g) { 

     int x = xpac, y = ypac; 
     BufferedImage image = null; 
     try { 
      image = ImageIO.read(new File("pacright.png")); 
     } catch (IOException e) { 
      System.out.println("Can't find the Image."); 
     } 
     g.drawImage(image, x, y, null); 
    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     // TODO Auto-generated method stub 
     System.out.println("Hi there Buddy"); 

    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     // TODO Auto-generated method stub 
     System.out.println("Hi there Buddy"); 

    } 

    @Override 
    public void keyTyped(KeyEvent e) { 
     // TODO Auto-generated method stub 
     System.out.println("Hi there Buddy"); 
    } 

} 

回答

2

你應該只註釋掉addKeyListenerMyPanel類實例化後MyPanel這樣做的主要類:

frame.addKeyListener(panel); 
+0

工作Dan謝謝。 – OOkhan

2

你應該把this.addKeyListener(this);在MyPanel類的構造函數,而不是方法的paintComponent。

+0

仍然沒有工作。 – OOkhan