Java 输入对话框[所需信息]

Java 输入对话框[所需信息],java,string,swing,input,output,Java,String,Swing,Input,Output,所以我有一个程序,当我点击一个按钮时,它会启动一个输入对话框。我需要的帮助是,一旦我从输入对话框中收集到信息,这些信息就消失了,我按Enter键,输入对话框就会重新出现。为什么? 还有,我怎样才能让它在输入对话框为空的情况下显示为错误,然后重复,直到它不是空的 调用rootPane.setDefaultButton时,指定的按钮由Enter键激活 要防止在输入不可接受时关闭JOptionPane,请创建实际的JOptionPane实例,然后创建自己的按钮并将其指定为选项。按钮的操作或Actio

所以我有一个程序,当我点击一个按钮时,它会启动一个输入对话框。我需要的帮助是,一旦我从输入对话框中收集到信息,这些信息就消失了,我按Enter键,输入对话框就会重新出现。为什么?

还有,我怎样才能让它在输入对话框为空的情况下显示为错误,然后重复,直到它不是空的



调用
rootPane.setDefaultButton
时,指定的按钮由Enter键激活

要防止在输入不可接受时关闭JOptionPane,请创建实际的JOptionPane实例,然后创建自己的按钮并将其指定为选项。按钮的操作或ActionListener必须调用JOptionPane的
setValue
方法:

final JOptionPane optionPane = new JOptionPane("What is your first name?",
    JOptionPane.QUESTION_MESSAGE);
optionPane.setWantsInput(true);

Action accept = new AbstractAction("OK") {
    private static final long serialVersionUID = 1;
    public void actionPerformed(ActionEvent event) {
        Object value = optionPane.getInputValue();
        if (value != null && !value.toString().isEmpty()) {
            // This dismisses the JOptionPane dialog.
            optionPane.setValue(JOptionPane.OK_OPTION);
        }
    }
};

Object acceptButton = new JButton(accept);
optionPane.setOptions(new Object[] { acceptButton, "Cancel" });
optionPane.setInitialValue(acceptButton);

// Waits until dialog is dismissed.
optionPane.createDialog(null, "First Name").setVisible(true);

if (!Integer.valueOf(JOptionPane.OK_OPTION).equals(optionPane.getValue())) {
    // User canceled dialog.
    return;
}

String fn = optionPane.getInputValue().toString();

无关:永远不要对组件进行任何手动大小调整/定位-这是LayoutManager的专属责任。当您收集输入,并且输入对话框消失时,按钮会获得焦点吗?
final JOptionPane optionPane = new JOptionPane("What is your first name?",
    JOptionPane.QUESTION_MESSAGE);
optionPane.setWantsInput(true);

Action accept = new AbstractAction("OK") {
    private static final long serialVersionUID = 1;
    public void actionPerformed(ActionEvent event) {
        Object value = optionPane.getInputValue();
        if (value != null && !value.toString().isEmpty()) {
            // This dismisses the JOptionPane dialog.
            optionPane.setValue(JOptionPane.OK_OPTION);
        }
    }
};

Object acceptButton = new JButton(accept);
optionPane.setOptions(new Object[] { acceptButton, "Cancel" });
optionPane.setInitialValue(acceptButton);

// Waits until dialog is dismissed.
optionPane.createDialog(null, "First Name").setVisible(true);

if (!Integer.valueOf(JOptionPane.OK_OPTION).equals(optionPane.getValue())) {
    // User canceled dialog.
    return;
}

String fn = optionPane.getInputValue().toString();