文本字段在JOptionPane.showInputDialog中显示两次。为什么?

时间:2013-03-24 15:17:05

标签: java swing jframe jtextfield joptionpane

所以,我正在创建一个简单的对话框来获取用户输入,但文本字段显示两次。这是一个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());
}

enter image description here

这里的代码有什么问题?

2 个答案:

答案 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);