Java JCheckBox在选中时返回false

Java JCheckBox在选中时返回false,java,swing,jtable,jcheckbox,Java,Swing,Jtable,Jcheckbox,我在一个表单上有一个JCheckbox,我试图获取它的值并将其放入数据库。这只是代码的一部分,但如果还不够的话,我可以继续发布整个类(虽然它又大又乱,但我会看看我们是怎么做的) 还有一些其他的东西,这些信息在数据库中显示,在我的表模型中也显示为未经检查 但是我把System.out.println(featuredCheck)放进去行来测试它,每次我运行它时,它都会打印false,即使我选中了复选框。有什么想法吗?您从不在ActionListener中检查featuredCheck的状态,而是在

我在一个表单上有一个JCheckbox,我试图获取它的值并将其放入数据库。这只是代码的一部分,但如果还不够的话,我可以继续发布整个类(虽然它又大又乱,但我会看看我们是怎么做的)

还有一些其他的东西,这些信息在数据库中显示,在我的表模型中也显示为未经检查


但是我把
System.out.println(featuredCheck)放进去行来测试它,每次我运行它时,它都会打印false,即使我选中了复选框。有什么想法吗?

您从不在ActionListener中检查featuredCheck的状态,而是在listener创建代码之前,在用户有机会检查之前。相反,在ActionListener内部,您正在检查布尔变量featuredCheck的状态,当复选框的状态更改时,它的状态不会神奇地改变。解决这个问题:检查JCheckBox(不是布尔变量)的状态,其中需要它的值

所以

//!! boolean featuredCheck = featuredCB.isSelected(); // ***** get rid of this variable

submitBT.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent event)
    {
        if(event.getSource() == submitBT)
        {   
            idContent.setUser(userTF.getText());
            idContent.setMovie(titleTF.getText());

            //  !!!   idContent.setFeatured(featuredCheck);  // **** no *****
            idContent.setFeatured(featuredCB.isSelected(););  // *****yes ****

            idContent.setRating(Integer.parseInt(ratingTF.getText()));
            if(owner.updateReview(isUpdate, idContent))
            {
                // success
                try {
                    MovieReviewDSC.add(idContent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else
            {
                // fail
            }
        }
    }

太好了,这很有效,非常感谢!我仍在学习ActionListener以及在它们中可以做什么和不能做什么,所以我很感谢您的解释。@user3690863:它实际上与ActionListener没有什么关系,而是与您的布尔变量有关,如果JCheckBox发生变化,则布尔变量不会发生变化。如果您绝对需要布尔值,可以通过向JCheckBox添加ItemListener并更改该侦听器中的布尔值来解决此问题。哦,好的,我会记住ItemListener,我想我需要它来实现一些单选按钮。我不认为我需要它来解决这个特定的问题,因为我只需要知道在单击submit按钮时是否选中了该框。谢谢
//!! boolean featuredCheck = featuredCB.isSelected(); // ***** get rid of this variable

submitBT.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent event)
    {
        if(event.getSource() == submitBT)
        {   
            idContent.setUser(userTF.getText());
            idContent.setMovie(titleTF.getText());

            //  !!!   idContent.setFeatured(featuredCheck);  // **** no *****
            idContent.setFeatured(featuredCB.isSelected(););  // *****yes ****

            idContent.setRating(Integer.parseInt(ratingTF.getText()));
            if(owner.updateReview(isUpdate, idContent))
            {
                // success
                try {
                    MovieReviewDSC.add(idContent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else
            {
                // fail
            }
        }
    }