Я пытался сделать эту текстовую игру, в которой у пользователя есть пользовательский интерфейс, в котором они просто вводят команды в JTextField, а игра разворачивается в JTextArea.Классическая RPG своего рода стиль.У меня были проблемы с использованием KeyListener, чтобы попытаться увидеть, когда пользователь нажимает клавишу «ввод», которая помещает то, что они сказали, в JTextArea, а затем очищает JTextField.Это работало прежде, чем без проблем, JTextField очистится, и все было идеально.Затем после того, как я попытался добавить JTextArea.append (текст);к смеси все сломалось.Даже после удаления функции теперь возникнет та же ошибка:
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.Любая помощь будет принята с благодарностью.Этот код был бельмом на моей стороне целую вечность.