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){
}
}