JOptionPane,在验证JTextField时关闭并取消不工作

时间:2014-04-15 19:30:07

标签: java swing dialog joptionpane

我有一个带有JTextField的JOptionPane:

private void imageFilePanel(){
    JRadioButton go = new JRadioButton("Grid Object");
    JRadioButton ti = new JRadioButton("Tile Image");
    JTextField fn = new JTextField(15);
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    panel.add(fn);
    panel.add(go);
    panel.add(ti);
    JOptionPane.showOptionDialog(null, panel, "Name Image", JOptionPane.CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);

    if(fn.getText().equals("") || !(go.isSelected()) && !(ti.isSelected())){
        JOptionPane.showMessageDialog(frame, "Complete required fields.", "Error Message", JOptionPane.ERROR_MESSAGE);
        imageFilePanel();
    }
}

我不希望用户继续下一步,除非他们填写JTextField" fn"并选择其中一个JRadioButtons(" go"或" ti")。

但是,当用户单击窗口关闭或取消按钮时,我的代码现在会通过if语句。这不是我想要的行为;我希望仅在用户尝试按下" OK"时才评估if语句。按钮没有填写" fn",没有选择"去"或者" ti",或者没有两者。

欢迎任何建议!

2 个答案:

答案 0 :(得分:1)

实际上,如果您锁定showOptionDialog,您会看到它返回int按住对话框中按下的按钮,因此您可以使用int变量来确定天气到是否执行你的陈述。

例如:

int result = JOptionPane.showOptionDialog(null, panel, "Name Image", JOptionPane.CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);

if(result == JOptionPane.YES_OPTION) {
     //your code.
}

答案 1 :(得分:0)

你可以使用  '的ItemListener'

就像' ActionListener'。如果语句应该在&Item;项目列表中。这将检查项目并生成所需的弹出窗口' JOptionPane' 检查this。还有一件事;如果你说'你的if语句必须如下所示' ("去"或" ti")。'

if(fn.getText().equals("") || !(go.isSelected()) || !(ti.isSelected())){