所以,我正在创建一个简单的对话框来获取用户输入,但文本字段显示两次。这是一个SSCCE。
public static void main(String[] args) {
JTextField fileName = new JTextField();
Object[] message = {"File name", fileName};
String option = JOptionPane.showInputDialog(null, message, "Add New", JOptionPane.OK_CANCEL_OPTION);
System.out.println(fileName.getText());
}
这里的代码有什么问题?
答案 0 :(得分:4)
这样做是因为您要在JTextField
中添加message[]
对象。
Object[] message = {"File name", fileName};//sending filename as message
因此,显示的第一个JTextField
是inputDialog中固有的JTextField
,而另一个是您作为消息发送的fileName
。
我猜您想将public static void main(String[] args) {
JTextField fileName = new JTextField();
Object[] message = {"File name", fileName.getText()};//send text of filename
String option = JOptionPane.showInputDialog(null, message, "Add New", JOptionPane.OK_CANCEL_OPTION);
System.out.println(fileName.getText());
}
的内容发送到邮件。在这种情况下,您的代码应该是这样的:
filename
<强>更新强>
如果您只想获取输入,则无需将对象public static void main(String[] args) {
//JTextField fileName = new JTextField();
Object[] message = {"File name"};
String option = JOptionPane.showInputDialog(null, message, "Add New", JOptionPane.OK_CANCEL_OPTION);
if (option == null)
System.out.println("Cancell is clicked..");
else
System.out.println(option+ " is entered by user");
}
作为消息发送。您应该按照以下步骤进行操作:
{{1}}
答案 1 :(得分:2)
默认情况下,输入对话框包含文本字段,因此您无需添加另一个。也许这样尝试
String name = JOptionPane.showInputDialog(null, "File name",
"Add New", JOptionPane.OK_CANCEL_OPTION);
System.out.println(name);