Я пытаюсь создать текстовую игру и решил, что лучший способ сделать это - использовать пользовательский интерфейс вместо метода cin.nextLine () и вывод компилятора.То, что я пытался сделать, это добавить KeyEvent в мой TextField для ввода данных пользователем, где, когда пользователь нажимает клавишу ввода, его текст попадает в область TextArea, которую я установил выше, под любым другим текстом, и ввод исчезает.Я также пытался добавить строку, введенную ими, во ввод непосредственно перед нажатием клавиши ввода в строковую переменную, которая будет обработана позже в операторах if / else.
Я попытался добавить текстmain.input.setText ( "");но это тоже не сработало.Кроме того, я пытался добавить слово public до замедления и инициализации TextField, но это привело к его собственной ошибке. Я также точно не знаю, как мне правильно обращаться к тексту внутри TextField, чтобыдобавьте его в TextArea выше и обработайте как строковую переменную.
import java.awt.*;
import java.awt.event.*;
public class UI extends Frame implements KeyListener
{
public void test()
{
Frame main=new Frame();
main.setSize(1366,768);
main.setLayout(null);
main.setVisible(true);
TextArea mainText=new TextArea("Come on and do something!");
mainText.setBounds(10,30,1366,728);
main.setBackground(Color.white);
mainText.setEditable(false);
TextField input=new TextField("");
input.setBounds(10,738,1366,20);
main.add(input);
main.add(mainText);
input.addKeyListener(this);
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
Toolkit.getDefaultToolkit().beep();
input.setText("");
}
}
public static void main(String[] args)
{
UI set = new UI();
set.test();
}
}
Я ожидал, что этот код установит пустое значение TextField, и я надеялся пойти дальше, чтобы узнать, как добавить кодк переменной и к текстовой области.Вместо этого я получаю это сообщение об ошибке:
Error: cannot find symbol
symbol: variable input
location: class UI
РЕДАКТИРОВАТЬ: Хорошо, я не знал, что AWT устарел, поэтому я изменил его на версию Swing.Я также удалил расширение, а также изменил KeyListener на ActionListener.Однако в настоящее время происходит то, что ActionListener не добавляется должным образом в JTextField.Вот мой обновленный код ниже:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class UI
{
private JFrame main;
private JTextArea mainText;
public UI()
{
main=new JFrame("Text Game");
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setSize(1366,768);
mainText=new JTextArea("Come on and do something!");
mainText.setBounds(10,100,1366,728);
mainText.setEditable(false);
JTextField input=new JTextField("");
input.setBounds(10,700,1366,20);
input.addActionListener(this);
main.add(input);
main.add(mainText);
main.setVisible(true);
}
public static void main(String[] args)
{
new UI();
}
}
Есть идеи, что я сейчас сделал неправильно?