幸运游戏GUI ..怎么了?

Dan*_*299 4 java eclipse user-interface swing

我写了一个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);

    }
}
Run Code Online (Sandbox Code Playgroud)

(不要担心进口,我只是没有包括他们)任何帮助将不胜感激.

Rei*_*eus 6

NumberFormatException在此行启动时抛出A :

private double t1num = Double.parseDouble(t1.getText());
Run Code Online (Sandbox Code Playgroud)

因为JTextField t1将包含一个空的String.

实际上,这可以简单地保持未分配状态,并将0采用用于数字原语的默认值.


另外在使用时 Random

t1num == r.nextInt();
Run Code Online (Sandbox Code Playgroud)

可以写成:

t1num == r.nextDouble();
Run Code Online (Sandbox Code Playgroud)

此外KeyListener,不建议在使用JTextComponents.在这里,您只需要处理ENTER键操作,这样ActionListener就可以更好,更简单地使用.