java功能中的clicker游戏

时间:2016-10-18 12:33:58

标签: java swing timer nullpointerexception

我试图写一个" ClickerGame"用户需要在1分钟内尽可能多地点击按钮。 你能帮我改进这个程序的功能吗?它没有真正起作用。

import javax.swing.*;

import java.awt.FlowLayout;
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.util.Date;

public class ClickerGame extends javax.swing.JFrame {
    int i,j;
    JPanel panel;
    JFrame frame;
    JButton start;
    JButton stop;
    JButton click;
    JTextArea text;
    JLabel label;
    public static void main(String[] args){
        ClickerGame a = new ClickerGame();
        a.go();
    }

    public void go(){
         frame = new JFrame();
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         JPanel panel = new JPanel();

         click = new JButton("Click");
         click.addActionListener(new ClickListener());

         start=new JButton("Start");
         start.addActionListener(new StartListener());

         stop=new JButton("Stop");
         stop.addActionListener(new StopListener());
         panel.add(start);
         panel.add(click);
         panel.add(label);
         frame.getContentPane().add(BorderLayout.CENTER,panel);

         frame.setSize(500,500);
         frame.setVisible(true);
    }
    class ClickListener implements ActionListener{
        public void actionPerformed(ActionEvent event){

            click.setText("Number of clicks: "+i);
            i++;
        }

        }

    Timer timer = new Timer(1000,new ActionListener(){
        public void actionPerformed(ActionEvent e){
            Date currentTime = new Date();
            label= new JLabel(currentTime.toString());


        }
    });

    class StartListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            timer.start();
        }
    }
    class StopListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            timer.stop();
        }
    }

}

2 个答案:

答案 0 :(得分:1)

您的错误是由于尝试将label添加到panel而导致的,因为label从未初始化(null)。

删除:panel.add(label);

我不相信你的游戏功能符合预期,但这是一个单独的问题。

答案 1 :(得分:0)

panel.add(label);

在此行中..标签未初始化。请在使用之前初始化它 -

label = new JLabel("ABC");