gpt4 book ai didi

java - 无法使用 JTextArea 修复 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 09:37:15 26 4
gpt4 key购买 nike

我正在尝试制作一个在 jframe 中运行的基于文本的冒险,但是当我运行该程序时,我得到 NullPointer线上错误97 (first time i append console in the game method)我不知道如何解决它。我对 java 比较陌生所以这可能很简单,我只是不知道。

我的代码在这里

package window;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Gui extends JFrame {

public JPanel contentPane;
public static JTextField input;
public static JButton send;
public static JTextArea console;
public static JTextArea invintory;
public static JTextArea stats;
static String i = "";

/**
* Launch the application.
*/



/**
* Create the frame.
*/
public Gui() {
//variables

int Gold = 20;
int Health = 100;
int MaxHealth = 100;


//variables end
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JTextArea console = new JTextArea();
console.setBounds(10, 11, 281, 214);
contentPane.add(console);

input = new JTextField();
input.setBounds(10, 236, 281, 20);
contentPane.add(input);
input.setColumns(10);

JTextArea stats = new JTextArea();
stats.setBounds(301, 11, 123, 53);
contentPane.add(stats);

JTextArea invintory = new JTextArea();
invintory.setBounds(301, 75, 128, 137);
contentPane.add(invintory);

JButton send = new JButton("Send");
send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String i = input.getText();
input.setText("");
stats.setText("");
stats.append("Health: " + Health + "/" + MaxHealth + "\n");
stats.append("Gold: " + Gold);
}
});
send.setBounds(301, 224, 128, 32);
contentPane.add(send);

stats.append("Health: " + Health + "/" + MaxHealth + "\n");
stats.append("Gold: " + Gold);

}

public static void game (JButton send, JTextArea console, JTextArea stats, JTextArea invintory, JTextField input, String i) {




//start
//START
//START
//START
//START
while (true) {
console.append("You wake up open feild, with vast amounts of wheet in every direction");
console.append("There is a path going in either direction what do you want to do");
console.append("\t1. Go left.");
console.append("\t2. Go right.");
while (i == "") {
}
if (i == "1") {
console.append("1");
break;
}
else if (i == "2") {
console.append("2");
break;
}



}
//END
//END
//END
//END
}

public static void main(String[] args) {
try {
Gui frame = new Gui();
frame.setVisible(true);
Gui.game(send, console, stats, invintory, input, i);
} catch (Exception e) {
e.printStackTrace();
}

}

}

最佳答案

在你的全局变量console中为null

public static JTextArea console;

您在 Gui 方法中初始化了它

JTextArea console = new JTextArea();

因此,在 Gui 方法中,您的全局 console 变量未初始化,这会在 Gui 方法下创建一个本地变量 console。

要在 Gui 方法中初始化全局变量,您需要以这种方式初始化

console = new JTextArea();

您对所有变量都犯了这个错误,因此请这样编辑代码

public Gui() {
//variables

int Gold = 20;
int Health = 100;
int MaxHealth = 100;


//variables end
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

console = new JTextArea();
console.setBounds(10, 11, 281, 214);
contentPane.add(console);

input = new JTextField();
input.setBounds(10, 236, 281, 20);
contentPane.add(input);
input.setColumns(10);

stats = new JTextArea();
stats.setBounds(301, 11, 123, 53);
contentPane.add(stats);

invintory = new JTextArea();
invintory.setBounds(301, 75, 128, 137);
contentPane.add(invintory);

send = new JButton("Send");
send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String i = input.getText();
input.setText("");
stats.setText("");
stats.append("Health: " + Health + "/" + MaxHealth + "\n");
stats.append("Gold: " + Gold);
}
});
send.setBounds(301, 224, 128, 32);
contentPane.add(send);

stats.append("Health: " + Health + "/" + MaxHealth + "\n");
stats.append("Gold: " + Gold);

}

关于java - 无法使用 JTextArea 修复 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38780611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com