Во-первых, я думаю, что вы должны добавить слушателя в текстовое поле. Если вы используете JTextField
, это будет:
JTextField text = new JTextField();
text.addKeyListener(new KeyListener {
@Overwrite
public void keyPressed(event e) {
if(e.keyCode = SWT.CR) { // SWT.CR is key code of Enter
// Call your function
}
}
}
Программа будет прослушивать событие клавиатуры. Когда вы нажимаете ENTER, функция внутри слушателя запускается.
Не позволяйте программе ждать. Это приложение JFrame
, а не инструмент командной строки, поэтому не используйте мышление при написании инструментов командной строки, когда разрабатываете что-то, включающее окно. Представьте, что произойдет, если программа просто остановится и будет ждать после строки String input;
. Окно будет зависать, и события не будут обрабатываться, что очень плохо для пользователя.
Я предлагаю вам сделать все внутри обработчика событий для нажатия кнопки.
// at class level
String[] prompts = new String[] { "prompt1", "prompt2", "prompt3" };
int currentPrompt = 0;
// inside the event handler
String text = textfield.getText();
switch (currentPrompt) {
case 0:
// text contains the input for prompt1
case 1:
// text contains the input for prompt2
case 2:
// text contains the input for prompt3
}
Внутри корпусов коммутаторов вы можете перейти к следующему приглашению:
currentPrompt++; // or set it equal to some other number if you wan to jump around
promptLabel.setText(prompts[currentPrompt]);
textField.setText("");
Один из способов - использовать JOptionPane.showInputDialog . Приложение «останавливается» с помощью модального диалога, и вы очень легко получаете его ввод.
Пример:
//returns null if user closes the dialog.
String answer = JOptionPane.showInputDialog("What is your first name?");