我一直在尝试找出如何通过在JTextField
中按“ Enter”来接收字符串和整数输入。我希望它类似于Scanner.next()
接收输入的方式-程序“等待”直到给出输入,然后将其适当存储以备将来使用。我希望能够这样做,因为我的程序要求用户输入内容,然后显示相应的文本。快速示例:
- 程序:“你叫什么名字?”
- 用户:(输入名称和点击进入)
- 程序:“欢迎您,(用户的输入)。”
我可以通过按下按钮来提取JTextField的内容,但是我不知道如何让程序“等待”进行输入(“等待”直到按下Enter)。
public static String getStringInput(String prompt)
{
console.append(prompt);
String input;
//Here I need to get the input from a JTextField after I've pressed
//enter.
return input;
}
如果有人知道一种更好的输入和响应系统的方法,那就太好了。
谢谢。
答案 0 :(得分:1)
不要让程序等待。这是一个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("");
答案 1 :(得分:0)
一种方法是使用JOptionPane.showInputDialog。应用程序通过模式对话框“停止”,您可以非常轻松地获取他的输入。
示例:
//returns null if user closes the dialog.
String answer = JOptionPane.showInputDialog("What is your first name?");
答案 2 :(得分:-2)
首先,我认为您必须在文本框中添加一个侦听器。如果您使用的是#sidebar {
background-color: #e0e0e0;
border: 1px solid red;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 100%;
}
.hide {
animation-name: hide;
animation-duration: 1s;
left: -100%;
}
.show {
animation-name: show;
animation-duration: 1s;
}
,则应该是:
JTextField
程序将监听键盘事件。当您按ENTER键时,侦听器内部的功能将运行。