के लिए काम नहीं करता है, मैं एक गेम इंजन बनाने की कोशिश कर रहा हूं। मैंने गेम क्लास बनाया है लेकिन त्रुटि KeyBoard क्लास में रहती है। यहां मैं कुछ कोड छोड़ देता हूं।addKeyListener() JPanel
कक्षा :: खेल
package transfer2pc.co.cc.game.tileengine;
import java.awt.Graphics;
import java.util.HashMap;
import javax.swing.JPanel;
import transfer2pc.co.cc.game.tileengine.input.KeyBoard;
public abstract class Game extends JPanel implements Runnable {
/**
*
*/
private static final long serialVersionUID = 640206679500196209L;
HashMap<String, ?> maps = null;
KeyBoard keyBoard = null;
public Game(){
super();
keyBoard = new KeyBoard(this);
setKeyBoard(keyBoard);
Thread th = new Thread(this);
th.start();
}
public void run(){
while(true){
repaint();
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g){
}
public void addMap(){
}
public void setMap(){
}
public abstract void keyPressed(int code);
public abstract void keyReleased(int code);
public abstract void keyTyped(int code);
public void setKeyBoard(KeyBoard key){
addKeyListener(key);
}
}
कक्षा :: कुंजीपटल
package transfer2pc.co.cc.game.tileengine.input;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import transfer2pc.co.cc.game.tileengine.Game;
public class KeyBoard extends KeyAdapter implements KeyListener {
Game game = null;
public KeyBoard(Game gm){
this.game = gm;
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("KeyPressed");
game.keyPressed(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
game.keyReleased(e.getKeyCode());
}
@Override
public void keyTyped(KeyEvent e) {
game.keyTyped(e.getKeyCode());
}
public static char getChar(int key){
return (char)key;
}
}
कक्षा :: KeyTest
package transfer2pc.co.cc.game.tileengine.test;
import java.awt.Graphics;
import javax.swing.JFrame;
import transfer2pc.co.cc.game.tileengine.Game;
import transfer2pc.co.cc.game.tileengine.input.KeyBoard;
public class KeyTest extends Game {
/**
*
*/
private static final long serialVersionUID = 8557676950779023327L;
char pressed;
public KeyTest(){
super();
addKeyListener(new KeyBoard(this));
}
@Override
public void keyPressed(int code) {
pressed = KeyBoard.getChar(code);
}
@Override
public void keyReleased(int code) {
}
@Override
public void keyTyped(int code) {
}
@Override
public void paint(Graphics g){
g.drawString("You pressed: "+pressed, 20, 20);
}
public static void main(String[] args){
JFrame frame = new JFrame("KeyTest");
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(new KeyTest());
frame.setVisible(true);
}
}
लेकिन त्रुटि कोई अपवाद नहीं फेंक दिया और इनपुट प्रतिसाद नहीं था था पढ़ा नहीं जा रहा है। क्या कोई मुझे यह करने का सही तरीका कह सकता है ..
1) जल्द से जल्द बेहतर सहायता के लिए, एक [एसएससीसीई] (http://sscce.org/) पोस्ट करें। 2) महत्वपूर्ण घटनाओं को सुनने से पहले एक घटक को ध्यान देने योग्य होना चाहिए। 3) यदि किसी पैनल में पेड़ या तालिकाओं जैसी चीज़ें होती हैं, तो वे घटक महत्वपूर्ण घटनाओं का उपभोग करेंगे। 4) आमतौर पर 'KeyListener' पर कुंजी बाइंडिंग का उपयोग करने की अनुशंसा की जाती है। 5) 'थ्रेड.sleep (30); 'ऐसा मत करो। मैंने पिछले 2 दिनों में इस 3 बार चर्चा की होगी। क्यों के लिए मेरी पोस्ट और टिप्पणियां खोजें। –