繁体   English   中英

Java错误“线程“ main”中的异常java.lang.NullPointerException”

Java error “Exception in thread ”main“ java.lang.NullPointerException” [closed]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

错误:“线程“主”中的异常”位于com.vipgamming.Frytree.Game.main(Game.java:47)上的java.lang.NullPointerException”

我不是一个很好的程序员。 只是说和不好的英语。

Game.java:

package com.vipgamming.Frytree;

import java.awt.Canvas;
import java.awt.Dimension;

import javax.swing.JFrame;

public class Game extends Canvas implements Runnable {

private static final long serialVersionUID = 1L;
public static int width = 300;
public static int height = width /16 * 9;
public static int scale = 3;

private Thread thread;
private JFrame frame;
private boolean running = false;

public Game() {
    Dimension size = new Dimension(width * scale, height * scale);
    setPreferredSize(size);
}

public synchronized void start() {
    running = true;
    thread = new Thread(this, "Display");
    thread.start();
}

public synchronized void stop() {
    running = false;
    try {
        thread.join();
    }catch (InterruptedException e) {
        e.printStackTrace();
    }
}

public void run() {
    while (running) {
            System.out.println("FryTree...Loading...");
        }
    }

    public static void main(String [] args) {
        Game game = new Game();
        game.frame.setResizable(true);
        game.frame.setTitle("Frytree");
        game.frame.add(game);
        game.frame.pack();
        game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        game.frame.setLocationRelativeTo(null);
        game.frame.setVisible(true);

        game.start();
    }
}

抱歉,我不知道如何发布代码。(不是Inglish.Portuguese)

2 个回复

您需要在使用之前实例化框架:

game.frame = new JFrame();
game.frame.setResizable(true);
...

您也可以将其放在构造函数中:

public Game() {
 this.frame = new JFrame();
 Dimension size = new Dimension(width * scale, height * scale);
 setPreferredSize(size);
}

如果main中定义的设置每次都相同,那么您可以将整个部分分解到构造函数中,而不仅仅是创建一个空白。 如果没有,您总是可以像这样重载构造函数:

public Game() {//base constructor
 this.frame = new JFrame();
 Dimension size = new Dimension(width * scale, height * scale);
 setPreferredSize(size);
}

public Game(JFrame jframe)//injected frame constructor
{
 this.frame = jframe;
 Dimension size = new Dimension(width * scale, height * scale);
 setPreferredSize(size);
}

或让游戏创建设置

public Game()
{
 this.ConstructFrame();
 Dimension size = new Dimension(width * scale, height * scale);
 setPreferredSize(size);
}

private void ConstructFrame()
{
    this.frame = new JFrame();
    this.frame.setResizable(true);
    this.frame.setTitle("Frytree");
    this.frame.add(game);
    this.frame.pack();
    this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.frame.setLocationRelativeTo(null);
    this.frame.setVisible(true);
}

Game.frame不会在任何地方初始化Game.frame 最好将此帧初始化保存在单独的init方法中:

private void init() {
    frame = new JFrame();
    frame.setSize(400, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(true);
    frame.setTitle("Frytree");
    frame.add(this);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

(也最好扩展JPanel而不是重量级的AWT Canvas

9 Java:线程“main”java.lang.NullPointerException中的异常

我运行此代码时不断收到此错误,但我不知道如何修复它。 我已经做了大约3个月的Java并且可以使用一些帮助。 基本上该程序要求用户输入每位员工的工资率和工时。 支付率,小时数和员工数是所有将彼此共享相同索引的阵列。 当用户输入员工的工资率和工时时,程序将返回该员工的工资总额。 除了这个错 ...

2013-11-14 22:08:04 3 304   java
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM