我有一个带有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",或者没有两者。
欢迎任何建议!
答案 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())){