JComboBox和JTextFields不能使用equals()

时间:2017-10-05 10:32:12

标签: java swing

我有一个程序,用户在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()不再存在时,也值得一提,代码仍然无法正常工作。

我是一名业余程序员,我可能已经错过了一些重要的东西,但这似乎太简单了,不能解决。

1 个答案:

答案 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!");
        }
    }
});