Ich habe seltsames Problem, meine Anwendung funktioniert nicht auf 'run', sondern nur während des Debuggens.KeyListener arbeitet nur auf Debugger, aber nicht auf Run
Ich versuche, das Spiel zu starten, während die Taste gedrückt wird, aber dann keyListener dosent Arbeit (es funktioniert ordnungsgemäß beim Debuggen). Ich habe 3 Panel, das erste ist für die Anmeldung, und nach dem Klicken auf die Schaltfläche sollte das Spiel starten und das aktuelle Panel entfernen. Die zweite und dritte sind für Spielstand und Spielbereich. Wenn ich ein Spiel ohne LoginPanel öffne, funktioniert es gut. Hast du irgendwelche Ideen was falsch sein kann?
public LoginPanel(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
makeGIU();
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), this); // draw the image
}
private void makeGIU()
{
this.img = new ImageIcon(SOURCE).getImage();
setDimension();
button = new JButton("OK");
nickLabel = new JLabel("<html>SOKOBANA<br>TOMASZ JANIEC<br>KACPER KUSTRA</html>", JLabel.CENTER);
nickLabel.setFont(new Font("Gloria Hallelujah",Font.PLAIN,20));
nickLabel.setSize(100,50);
this.setLayout(new FlowLayout());
button.addActionListener(evt -> {
mainFrame.remove(this);
mainFrame.newGameStart();
mainFrame.revalidate();
});
this.setPreferredSize(Size);
this.add(button);
this.add(nickLabel);
this.add(nickText);
mainFrame.getContentPane().add(this,BorderLayout.CENTER);
}
public MainFrame() {
setTitle(TITLE);
setVisible(true);
setBounds(new Rectangle(DEFAULT_WIDTH, DEFAULT_HIGHT));
makeMenu();
this.setResizable(true);
//newGameStart(); // this does work
this.add(new LoginPanel(this)); // this dosent
revalidate();
}
public void newGameStart() {
Thread t = new Thread(new MyRunnable(this, DEFAULT_WIDTH, DEFAULT_HIGHT, mapNames) {
});
t.start();
}
Für eine bessere Hilfe festlegen können, senden Sie uns eine [Kurz, Self Contained, Correct (kompilierbare), Beispiel ] (http://sscce.org/) und/oder ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). – MasterBlaster
Für Swing verwenden wir normalerweise [key bindings] (https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) und nicht die untere Ebene 'KeyListener'. –