0

したがって、ユーザー入力を取得するための単純なダイアログを作成していますが、テキストフィールドが2回表示されます。これが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());
}

ここに画像の説明を入力してください

ここのコードの何が問題になっていますか?

4

2 に答える 2

4

JTextFieldにもオブジェクトを追加しているのでそうしていますmessage[]

Object[] message = {"File name", fileName};//sending filename as message

したがって、最初にJTextField表示されるのはinputDialogに固有のものであり、もう1つは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");
    }
于 2013-03-24T15:19:35.920 に答える
2

デフォルトの入力ダイアログにはテキストフィールドが含まれているため、別のテキストフィールドを追加する必要はありません。多分この方法で試してください

String name = JOptionPane.showInputDialog(null, "File name",
        "Add New", JOptionPane.OK_CANCEL_OPTION);
System.out.println(name);
于 2013-03-24T15:23:44.993 に答える