2016-03-25 5 views
1

Ich möchte in der Lage sein, einen Knopf zu drücken und ein kleines Spiel mit Java 2d erstellt wird. Ich habe versucht, einen try/catch zu verwenden, aber es wird in einer Endlosschleife (wegen der while-Schleife in der create-Methode i erraten)Wie rufe ich eine Methode, die eine InterruptedException in einem JButton ActionListner benötigt

Button.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 

         game.create();/***is a new window with a small 2d game, 
         the 'create' method requires and InterruptedException to be thrown.***/ 




       } 

      }); 

hier ist der Code von der create-Methode fest:

public void create() throws InterruptedException { 

    JFrame frame = new JFrame("Mini Tennis"); 
    GameMain gamemain = new GameMain(); 
    frame.add(gamemain); 
    frame.setSize(350, 400); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    while (true) { 
     gamemain.move(); 
     gamemain.repaint(); 
     Thread.sleep(10); 

    } 
} 

Antwort

2

Ich glaube, dass Ihre Endlosschleife den Swing-Thread daran hindert, auf Ihre Schaltfläche zu reagieren.

Versuchen Sie, Ihre Schleife in einem separaten Thread mit:

public void create() throws InterruptedException { 

    JFrame frame = new JFrame("Mini Tennis"); 
    GameMain gamemain = new GameMain(); 
    frame.add(gamemain); 
    frame.setSize(350, 400); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    (new Thread() { 
    public void run() { 
     while (true) { 
      gamemain.move(); 
      gamemain.repaint(); 
      Thread.sleep(10); 
     } 
    } 
    ).start(); 
} 
+0

ja, die perfekt danke hat funktioniert! – tamalon

+0

Ich bin glücklich zu helfen! –

Verwandte Themen