hallo leute,
ich habe ein Problem mit meinem KeyListener. Ich habe ein Programm geschrieben, in dem man ein level schaffen muss in dem man zum ziel kommt. Es gibt sich bewegende Gegner, die nicht berührt werden dürfen. Der KeyListener funktioniert einwandfrei, aber nur bis ich das erste mal einen Button gedrückt habe. Ab dem Moment passiert nichts mehr.
Bevor ich den Button drücke wird "Typed" ausgegeben, anschließend nicht mehr.
Vielen dank schonmal für eure hilfe.
EDIT: Fals ihr noch mehr Daten oder Klassen braucht einfach bescheid sagen.
ich habe ein Problem mit meinem KeyListener. Ich habe ein Programm geschrieben, in dem man ein level schaffen muss in dem man zum ziel kommt. Es gibt sich bewegende Gegner, die nicht berührt werden dürfen. Der KeyListener funktioniert einwandfrei, aber nur bis ich das erste mal einen Button gedrückt habe. Ab dem Moment passiert nichts mehr.
Code:
public class Gui {
static JFrame f = new JFrame();
public static JButton b = new JButton();
public static JButton p = new JButton();
public static JButton e = new JButton();
public static JButton s = new JButton();
public static JButton sta = new JButton();
public static JButton end = new JButton();
public static JButton check = new JButton();
static int sizeX = 517;
static int sizeY = 630;
public static int getSizeX() {
return sizeX;
}
public static int getSizeY() {
return sizeY;
}
public Gui() {
f.setVisible(true);
f.setSize(sizeX,sizeY);
f.setLocationRelativeTo(null);
f.setLayout(null);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.addMouseListener(new MousePressedListener());
f.addMouseMotionListener(new MotionListener());
f.addKeyListener( new KeyHandler());
Draw d = new Draw();
d.setVisible(true);
d.setBounds(0,0,sizeX,sizeY);
f.add(d);
b.setVisible(true);
b.setBounds(30,515,30,30);
b.addActionListener(new ActionHandler());
f.add(b);
p.setVisible(true);
p.setBounds(150,515,30,30);
p.addActionListener(new ActionHandler());
f.add(p);
e.setVisible(true);
e.setBounds(270,515,30,30);
e.addActionListener(new ActionHandler());
f.add(e);
s.setVisible(true);
s.setBounds(390,515,30,30);
s.addActionListener(new ActionHandler());
f.add(s);
sta.setVisible(true);
sta.setBounds(150, 550, 30, 30);
sta.addActionListener(new ActionHandler());
f.add(sta);
end.setVisible(true);
end.setBounds(270, 550, 30, 30);
end.addActionListener(new ActionHandler());
f.add(end);
check.setVisible(true);
check.setBounds(390, 550, 30,30);
check.addActionListener(new ActionHandler());
f.add(check);
}
public static void setSize() {
f.setSize(517,540);
}
}
public class KeyHandler implements KeyListener{
@Override
public void keyTyped(KeyEvent e) {
System.out.println("Typed");
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public class ActionHandler implements ActionListener{
public static boolean start = false;
public void actionPerformed(ActionEvent e) {
if(e.getSource() == Gui.b) {
Draw.status = 0;
}
if(e.getSource() == Gui.p) {
Draw.status = 1;
}
if(e.getSource() == Gui.e) {
Draw.status = 2;
}
if(e.getSource() == Gui.sta) {
Draw.status = 3;
}
if(e.getSource() == Gui.end) {
Draw.status = 4;
}
if(e.getSource() == Gui.check) {
Draw.status = 5;
}
if(e.getSource() == Gui.s) {
if(Goal.obj.size() > 3) {
int antwort = JOptionPane.showConfirmDialog(null, "Are you sure that you want to start", "start",JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null);
if (antwort == JOptionPane.YES_OPTION) {
start = true;
Gui.setSize();
}
}
else {
JOptionPane.showMessageDialog(null, "You need a Goal to start the Game", "Error", JOptionPane.INFORMATION_MESSAGE, null);
}
}
}
}
Bevor ich den Button drücke wird "Typed" ausgegeben, anschließend nicht mehr.
Vielen dank schonmal für eure hilfe.
EDIT: Fals ihr noch mehr Daten oder Klassen braucht einfach bescheid sagen.