我试图写一个" 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();
}
}
}
答案 0 :(得分:1)
您的错误是由于尝试将label
添加到panel
而导致的,因为label
从未初始化(null
)。
删除:panel.add(label);
我不相信你的游戏功能符合预期,但这是一个单独的问题。
答案 1 :(得分:0)
panel.add(label);
在此行中..标签未初始化。请在使用之前初始化它 -
label = new JLabel("ABC");