2012-12-19 72 views
4

我寫了一個GUI程序,我不知道我做錯了什麼。當我運行該程序時,它幾乎立即退出。希望能幫到你,這裏的程序:幸運遊戲GUI ..怎麼了?

public class RandomGame extends JFrame { 
    private JTextField t1 = new JTextField(); 
    private double t1num = Double.parseDouble(t1.getText()); 


    public RandomGame() { 
     setLayout(new FlowLayout()); 
     Event1 e1 = new Event1(); 
     t1.addKeyListener(e1); 
     add(t1); 

    } 


    public class Event1 implements KeyListener { 
     @Override 
     public void keyPressed(KeyEvent arg0) { 
      Random r = new Random(); 
      switch (arg0.getKeyCode()) { 
      case KeyEvent.VK_ENTER: 
       if(t1num == r.nextInt()) { 
        t1.setText("You Won!"); 
       } 
       else { 
        t1.setText("You Lost."); 
       } 

       } 
      } 



     @Override 
     public void keyReleased(KeyEvent arg0) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public void keyTyped(KeyEvent arg0) { 
      // TODO Auto-generated method stub 

     } 
    } 
    public static void main(String[] args) { 
     RandomGame gui = new RandomGame(); 
     gui.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     gui.setSize(1280, 800); 
     gui.setTitle("Random Game"); 
     gui.setVisible(true); 

    } 
} 

(不要擔心進口,我只是還沒有包括他們) 任何幫助,將不勝感激。

回答

6

一個NumberFormatException被套上啓動這一行:

private double t1num = Double.parseDouble(t1.getText()); 

JTextFieldt1將包含一個空String

實際上,這可以簡單地留下未分配的,並將採用用於數字基元的默認0值。

t1num == r.nextDouble(); 

也不推薦KeyListener是爲使用JTextComponents:作爲


使用 Random

t1num == r.nextInt(); 

另外可以寫。在這裏,您只需要處理ENTER鍵操作,因此ActionListener會更好地使用&。

+0

感謝您的幫助! – Dan299