gpt4 book ai didi

java - 我的 UI 中的 KeyListener NullPointerAcception,为什么是 JTextField.setText ("");不工作?

转载 作者:行者123 更新时间:2023-12-02 01:33:36 24 4
gpt4 key购买 nike

我一直在尝试制作这个文本游戏,其中用户有一个 UI,他们只需在 JTextField 中键入命令,游戏就会在 JTextArea 中进行。经典RPG风格。我在使用 KeyListener 尝试查看用户何时按下“输入”键时遇到问题,该键会将他们所说的内容放入 JTextArea,然后清除 JTextField。之前它工作正常,没有问题,JTextField 会清除,一切都很完美。然后我尝试添加 JTextArea.append(text);混合在一起,一切都崩溃了。即使将其拿走后,该函数现在也会出现相同的错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at UITest.keyReleased(UITest.java:17)

正如我之前所说,我已经尝试将其移回原始状态,但这不起作用。我还查了这个问题,有人说我需要添加一个 KeyEvent.consume();所以我也尝试过,但什么也没做。同样的错误继续发生。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class UITest implements KeyListener{
private JFrame main;
private JTextArea mainText;
private JTextArea input;

public void keyPressed(KeyEvent e) {}

public void keyReleased(KeyEvent e) {
if(e.getKeyCode()== KeyEvent.VK_ENTER) {
e.consume();
System.out.println("pressed");
String text = input.getText();
input.setText("");
mainText.append(text);
}
}
public void keyTyped(KeyEvent e) {}

public void actionPerformed(ActionEvent e) {}

public UITest(){
main=new JFrame("Text Game");
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setSize(1366,768);
mainText=new JTextArea("Testing");
mainText.setBounds(10,100,1366,728);
mainText.setEditable(false);
JTextField input=new JTextField("");
input.setBounds(10,700,1366,20);
input.addKeyListener(this);
main.add(input);
main.add(mainText);
main.pack();
main.setVisible(true);
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new UITest();
}
});
}
}

我希望这只是从 JTextField 获取文本并将其设置为临时字符串文本,然后删除 JTextField 并将文本添加到 JTextArea。当然,这并没有发生,我得到的只是一个 NullPointerException 错误。任何帮助将不胜感激。多年来,这段代码一直是我的眼中钉。

最佳答案

input.setText("");

这是导致错误的行,因为您尚未将 input 初始化为值。

请注意,您有两个同名的变量。在您的类(class)中,您有一个字段声明为:

private JTextArea input;

在构造函数中你有:

JTextField input=new JTextField("");

由于这是构造函数中的局部变量,因此其他方法无法使用它。将此行更改为

input=new JTextField("");

关于java - 我的 UI 中的 KeyListener NullPointerAcception,为什么是 JTextField.setText ("");不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55616651/

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