java - 尝试启动摆动计时器时出现空指针异常错误?
问题描述
当我尝试使用 timer.start(); 启动摇摆计时器时;它只是提出了一个我不知道如何修复的空指针异常错误。我叫错了吗?我见过它的例子有 timer.start(); 在实际的计时器方法中,但我不知道将它放在我的代码中的哪个位置。任何帮助,将不胜感激!!!!谢谢你。
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class Board extends JPanel {
private Timer timer;
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.fillRect(30, 30, 640, 640);//makes a black square
for(int i=30;i<=510; i+=160)//adds white columns
{
for(int j=30; j<=510; j+=160)
{
g.clearRect(i, j, 80, 80);
}
}
for(int i=110; i<=590; i+=160)//adds black columns
{
for(int j=110; j<=590; j+=160)
{
g.clearRect(i, j, 80, 80);
}
}
g.setFont(new Font("Monospace", Font.BOLD, 30));
g.setColor(Color.WHITE);
g.drawString("a", 85, 660);
g.drawString("c", 245, 660);
g.drawString("e", 405, 660);
g.drawString("g", 565, 660);
g.drawString("7", 35, 140);
g.drawString("5", 35, 300);
g.drawString("3", 35, 460);
g.drawString("1", 35, 620);
g.setColor(Color.BLACK);
g.drawString("b", 165, 660);
g.drawString("d", 325, 660);
g.drawString("f", 485, 660);
g.drawString("h", 645, 660);
g.drawString("8", 35, 60);
g.drawString("6", 35, 220);
g.drawString("4", 35, 380);
g.drawString("2", 35, 540);
timer.start();
}
public void showX(Graphics g)
{
g.setFont(new Font("wrongFont", Font.BOLD, 200));
g.setColor(Color.RED);
g.drawString("X", 35, 540);
}
public void boardImage()
{
JFrame frame=new JFrame();
frame.setSize(600, 600);
frame.getContentPane().add(new Board());
frame.setLocationRelativeTo(null);
frame.setBackground(Color.LIGHT_GRAY);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
CoordinateGame game=new CoordinateGame();
frame.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int x=e.getX();
int y=e.getY();
}
});
}
public static void Timer()
{
class TimerListener implements ActionListener
{
int elapsedSeconds = 30;
@Override
public void actionPerformed(ActionEvent evt)
{
Timer timer = new Timer(1000, new TimerListener());
elapsedSeconds--;
System.out.println(":(");
if(elapsedSeconds <= 0){
timer.stop();
}
}
}
}
}
解决方案
推荐阅读
- javascript - 我们可以根据条件在 react.js 中的 map 中引入换行符(css)吗
- qmake - QMake / jom 强制额外的 MIDL 编译器在 RC 之前运行
- vue.js - 开始使用组件,尝试嵌套它们
- ansible - Ansible 脚本模块“创建:”不生成文件
- angular - 从 Observable 绑定数据时对象未定义
- javascript - CKEDITOR5 如何插入 youtube 视频
- c# - 清洁架构中的“用例交互器”和“服务”有什么区别?
- google-apps-script - 如何在 URL 中指定“sendInvoice”的电报 API 方法的“价格”参数?
- python - 制作方形螺旋
- javascript - 在函数中使用多个等待,循环和处理错误