我有一个程序,用户在JTextFields中输入值,然后按一个按钮,将其值发送到SQL数据库。
JComboBox<String> dropRG = new JComboBox<String>();
dropRG.addItem("Children's Fiction");
dropRG.addItem("Fantasy");
dropRG.addItem("Horror");
dropRG.setEditable(true);
dropRG.setBounds(425, 210, 180, 27);
panel_1.add(dropRG);
JButton btnSubmit = new JButton("Submit");
btnSubmit.addActionListener(new ActionListener() {
String afValue = AF.getText().trim();
String alValue = AL.getText().trim();
String titleValue = titleBook.getText().trim();
String dropRGValue = dropRG.getSelectedItem().toString();
public void actionPerformed(ActionEvent e) {
if (afValue.equals(null) || alValue.equals(null) || titleValue.equals(null) || dropRGValue.equals(null)){
JOptionPane.showMessageDialog(null, "Can't have empty fields!");
}
else {
//SQL code
JOptionPane.showMessageDialog(null, "Entry Saved!");
}
}
});
btnSubmit.setBounds(270, 315, 117, 29);
panel_1.add(btnSubmit);
我有三个值的JTextField和一个可插入值的可编辑JComboBox。我以前在try / catch块中有上面的代码,并且它不会抛出异常,上面的代码过去常常对我很有用(但由于看不见的情况我不得不完全重做从头开始的程序),现在即使代码完全相同也没有。代码的结果总是最终成为&#34; Entry Saved!&#34;即使是空字段(和一个空的JComboBox,因为它是可编辑的)。
当JComboBox不可编辑且dropRgValue.equals()不再存在时,也值得一提,代码仍然无法正常工作。
我是一名业余程序员,我可能已经错过了一些重要的东西,但这似乎太简单了,不能解决。
答案 0 :(得分:3)
首先,在创建ActionListener
的时间点分配文本字段中的值,您实际上从未实际获取调用actionPerformed
方法的时间点的值,这会更有意义
现在,假设此String afValue = AF.getText().trim();
永远不会生成NullPointerException
,那么afValue.equals(null)
绝不会true
"" != null
自JTextField#getText
返回null
更合乎逻辑的方法是做更像......的事情。
JButton btnSubmit = new JButton("Submit");
btnSubmit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String afValue = AF.getText().trim();
String alValue = AL.getText().trim();
String titleValue = titleBook.getText().trim();
String dropRGValue = dropRG.getSelectedItem().toString();
if (afValue.isEmpty() || alValue.isEmpty() || titleValue.isEmpty() || dropRGValue.isEmpty()) {
JOptionPane.showMessageDialog(null, "Can't have empty fields!");
} else {
//SQL code
JOptionPane.showMessageDialog(null, "Entry Saved!");
}
}
});