2016-03-23 7 views
0

Ich mache ein Pong-Spiel mit meinem Spiel läuft in einem jpanel Fenster nach links. Ich fügte ein weiteres jpanel-Fenster auf der rechten Seite hinzu, so dass der Benutzer das Spiel zurücksetzen und entscheiden konnte, wie viele Punkte für einen Gewinn benötigt werden.Wie mit dem Wechsel zwischen jPanels in Netbeans?

Wie auch immer, wenn ich mit den Tasten auf der linken Seite (nicht Spielkonsole) interagieren, kann ich meinen Spielbildschirm nicht mehr wählen und mein Spiel reagiert nicht mehr. Ich benutze Netbeans und ich bin ein Anfänger, also wird jede Hilfe geschätzt!

Hier ist ein Bild des Problems, dann wird das Spiel mit der Tastatur gesteuert. Es läuft weiter, reagiert aber nicht mehr auf die Tastatur, wenn ich den Knopf drücke. enter image description here Ich habe auch etwas von meinem Code hinzugefügt.

public class LeikGluggi extends javax.swing.JPanel implements ActionListener, KeyListener { 
    int HRADISPADA = 10; 
    Spilari1 spilari1; 
    Spilari2 spilari2; 
    Bolti bolti; 
    public static int stadaLeiks = 0; //0 = stop, 1 = pása, 2 = spila 


    public LeikGluggi() { 
     initComponents(); 

     spilari1 = new Spilari1(); 
     spilari2 = new Spilari2(); 
     bolti = new Bolti(); 
     setSize(Leikbord.GLUGGI_BREIDD,Leikbord.GLUGGI_HAED); 
     this.addKeyListener(this); //látum vita þegar ýtt er á takka 
     this.setFocusable(true); //virkar bara þegar glugginn er valinn 
     Timer klukka = new Timer(30, this); 
     klukka.start(); 

    } 

-

private void uppfaera() 
{ 
    spilari1.uppfaera(); 
    spilari2.uppfaera(); 
    bolti.uppfaera(); 
    bolti.markCheck(); 
    bolti.skoppCheck(spilari1, spilari2); 


} 

public void resetLeik() 
{ 

} 


@Override 
public void paintComponent(Graphics g) 
{ 


    g.setColor(Color.BLUE); 
    spilari1.paint(g); 
    spilari2.paint(g); 
    bolti.paint(g);   //bolti teiknaður 

    if(stadaLeiks == 0) 
    { 
     g.setColor(Color.BLACK); 
     g.setFont(new Font("Consolas", Font.PLAIN, 30)); 
     g.drawString("Ýttu á bilstöng til að byrja", 50, 200); 
    } 
    if(stadaLeiks == 1) 
    { 
     g.setColor(Color.BLACK); 
     g.setFont(new Font("Consolas", Font.PLAIN, 80)); 
     g.drawString("PÁSA", 210, 250); 
    } 


} 


@Override 
public void actionPerformed(ActionEvent e) 
{ 
    //þegar timer tikkar þá actinPerformed keyrt 
    if(stadaLeiks == 2) 
    { 
     uppfaera(); 
    }     
    repaint(); 

} 

//Spaði hreyfður ef ýtt er á takka 
@Override 
public void keyPressed(KeyEvent e) 
{ 
    if(e.getKeyCode() == KeyEvent.VK_P) 
    { 
     if (stadaLeiks != 2) 
      stadaLeiks = 2; 

     else stadaLeiks = 1; 
    } 

    if (e.getKeyCode() == KeyEvent.VK_W) 
    { 
     spilari1.setyHradi(-HRADISPADA); 
    } 

    if (e.getKeyCode() == KeyEvent.VK_UP) 
    { 
     spilari2.setyHradi(-HRADISPADA); 
    } 

    if (e.getKeyCode() == KeyEvent.VK_S) 
    { 
     spilari1.setyHradi(HRADISPADA); 
    } 

    if (e.getKeyCode() == KeyEvent.VK_DOWN) 
    { 
     spilari2.setyHradi(HRADISPADA); 
    } 
} 

@Override 
public void keyReleased(KeyEvent e) 
{ 
    if (e.getKeyCode() == KeyEvent.VK_W || e.getKeyCode() == KeyEvent.VK_S) 
    { 
     spilari1.setyHradi(0); 
    } 
    if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN) 
    { 
     spilari2.setyHradi(0); 
    } 
} 

public void keyTyped(KeyEvent e) 
{ 
}      

}

+2

Könnten Sie einen Teil des Codes hinzufügen? –

+0

Bitte erstellen Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) – stjepano

+0

Einigen Code hinzugefügt und einen Screenshot hinzugefügt, danke! – snjall

Antwort

0

neuen Thread erstellen, wo Sie Ihr Objekt animieren und lassen Sie es für eine Weile schlafen, vielleicht haben Sie blockieren zu viel UI-Thread und Ihre Anwendung nur mehr reagiert , Stellen Sie sicher, dass jede Aktion, die Ihr UI aktualisiert, unter EDT

behandelt wird Von diesem Thread Positionen Ihrer Objekte ändern undverwenden

Ich Adresse nur nicht reagiert hier nicht, ich sehe nicht Ihren Code für ein jbutton. Note- Bearbeiten Sie Ihre Antwort, ich kann nicht wirklich sehen, was Sie hier fragen, und bitte versuchen Sie, Englisch in einem Codebeispiel zu verwenden, zumindest einige Kommentare.

Verwandte Themen