2012-08-02 3 views
0

Java로 기본 프로그램을 만들고 있습니다. 나는이 코드와 함께 작동하는 Input을 가지고있다 :Java 입력이 캔버스에서 작동하지 않습니다.

package main; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyAdapter; 

public class Input extends KeyAdapter{ 
    public void keyPressed(KeyEvent ke){ 
     _press[ke.getKeyCode()] = true; 
     _pressed[ke.getKeyCode()] = true; 
    } 
    public void keyReleased(KeyEvent ke){ 
     _press[ke.getKeyCode()] = false; 
     _released[ke.getKeyCode()] = true; 
    } 
    public void update(){ 
     for (int i = 0; i < _press.length; i ++){ 
      _pressed[i] = false; 
      _released[i] = false; 
     } 
    } 
    /** 
    * checks if a key is being pressed 
    * @param key an integer representing a key(Key class recommended) 
    * @return boolean 
    */ 
    public static boolean check(int key){ 
     if (_press[key]) return true; else return false; 
    } 
    /** 
    * checks if a key was pressed 
    * @param key an integer representing a key(Key class recommended) 
    * @return boolean 
    */ 
    public static boolean pressed(int key){ 
     if (_pressed[key]) return true; else return false; 
    } 
    /** 
    * checks if a key was released 
    * @param key an integer representing a key(Key class recommended) 
    * @return boolean 
    */ 
    public static boolean released(int key){ 
     if (_released[key]) return true; else return false; 
    } 
    protected static boolean[] _press = new boolean[128]; 
    protected static boolean[] _pressed = new boolean[128]; 
    protected static boolean[] _released = new boolean[128]; 
} 

나는 테스트를 실행했는데, ArrayList를 사용하여 기본 엔티티 시스템을 작동 시켰어.

하지만 그래픽이 손상되었습니다.

Canvas를 확장했지만 프레임에 추가하면 그래픽이 잘 작동하지만 입력이 더 이상 작동하지 않습니다.

canvas = new Jcanvas(); 
canvas.setSize(width, height); 
canvas.setBackground(Color.RED); 
frame.add(canvas); 

//input 
frame.addKeyListener(new Input()); 

이 문제를 해결할 수있는 방법이 있습니까, 아니면 그래픽이나 입력이 걸리나요?

package main; 
import java.awt.Canvas; 
import java.awt.Graphics; 

public class Jcanvas extends Canvas{ 
    static final long serialVersionUID = 42L; 
    public void paint(Graphics g){ 
    } 
    public void drawrect(int x, int y, int width, int height){ 
     Graphics g = getGraphics(); 
     //g.setColor(Color.blue); 
     g.drawRect(x, y, width, height); 
    } 
    public void drawfill(Graphics g, int x, int y, int width, int height){ 
    } 
} 

답변

2

봅니다 추가 : 여기

참조 내 Jcanvas 클래스입니다

//input 
Input input = new Input(); 
frame.addKeyListener(input); 
canvas.addKeyListener(input); 
관련 문제