基本上我不想从用户那里获得字符串,我创建了一个名为"frames"的类,其中有很多方法,如exitChoice((、infoPop((等。。。我希望创建一个名为getText((的程序,这就是我目前所拥有的:
public String getText()
{
JDialog textBox = new JDialog(frame, "Save Name", true);
JTextField inputField = new JTextField(18);
inputField.setText(save == null ? "new save" : save.saveName);
textBox.setBounds(width, height, 275, 70);
textBox.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
textBox.setLayout(new FlowLayout());
textBox.setAlwaysOnTop(true);
textBox.setResizable(false);
textBox.add(inputField);
textBox.setVisible(true);
return inputField.getText();
}
现在我知道这不起作用了,它只是让游戏陷入困境,我必须从外部终止它,我也明白为什么它不起作用,这不是问题所在,我也知道如何添加JButton,一个动作监听器,并从那里开始工作,
基本上,我试图创建一个干净简单的方法,它从用户那里获得一个String,该String全部包含在该方法中。
理想情况下,我想写一行沿着的行读取
//编辑:我知道getText((方法确实存在,很抱歉,如果它有误导性,我会修改它的
//String saveName = new JTextField.getText();
String saveName = new JTextInputGetterBoxThing();
但据我所知,到目前为止,这似乎并不存在,有人有什么想法吗?或者最理想的情况是知道我错过了一条班轮吗?
我认为您想要的是JOptionPane.showInputDialog
方法。像这样的东西?
public class GetUserInput {
public static String getUserInput() {
return JOptionPane.showInputDialog("Type Something");
}
public static void main(String[] args) {
System.out.println("User Input: " + getUserInput());
}
}
这显示了一个对话框,其中包含提示"键入某物"和一个用于输入的文本字段。无论用户在文本字段中键入什么,都由getUserInput()
返回。
老实说,我不确定是否完全理解你的问题。无论如何这里有一个关于如何在Swing中正确制作对话框的教程。
如果您使用
int ret = JOptionPane.showOptionDialog(new JDialog(), ...);
您的应用程序主框架输入被阻止,直到显示的JDialog关闭。如果你不想使用ActionListener或类似的东西(DocumentListener,…(,你可以强制用户在JTextField中插入一个值,按下ok按钮,当showOptionDialog返回时,用getText((手动检索JTextField的文本。
编辑:我试着把我的答案再延伸一点。扩展JDialog以创建所需的对话框:
public class CustomDialog extends JDialog{
private JPanel panel;
private JTextField field;
public CustomDialog(){
panel = new JPanel(); //create a panel possibly with a LayoutManager
field = new JTextField();
}
public JTextField getField(){
return this.field;
}
}
然后在需要的地方显示对话框,并在返回时检查字段文本:
CustomDialog dialog = new CustomDialog();
int ret = JOptionPane.showOptionDialog(dialog, ...);
String text = dialog.getField().getText();
public String getSaveName()
{
boolean textGot = false;
String returnText = null;
while (!textGot)
{
returnText = (String) JOptionPane.showInputDialog(hub.frame, "Enter the name of your save:n", "Save Box",
JOptionPane.PLAIN_MESSAGE, null, null, save == null ? "new save" : save.saveName);
if ((returnText != null) && (returnText.length() > 0))
{
textGot = true;
}
}
return returnText;
}
这是我使用的最后一种方法,比我以前的设置要干净得多,以前的设置包括创建一个小框架,并添加一个文本字段和一个带有监听器的按钮!