JCheckBox在选中时返回false

时间:2014-09-20 12:01:28

标签: java swing jtable jcheckbox

我在表单上有一个JCheckbox,我试图获取并放入数据库的值。这只是代码的一个片段,但如果它还不够,我可以继续发布整个课程(尽管它很大而且很混乱,但我会看到我们如何去)

// Create checkbox
JCheckBox featuredCB = new JCheckBox();
    topPanel.add(featuredCB);

//Take the value of it and put it in featuredCheck value
boolean featuredCheck = featuredCB.isSelected();
    System.out.println(featuredCheck);

submitBT.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent event)
        {
            if(event.getSource() == submitBT)
            {   
                idContent.setUser(userTF.getText());
                idContent.setMovie(titleTF.getText());
                idContent.setFeatured(featuredCheck);
                idContent.setRating(Integer.parseInt(ratingTF.getText()));


                if(owner.updateReview(isUpdate, idContent))
                {
                    // success
                    try {
                        MovieReviewDSC.add(idContent);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                else
                {
                    // fail

                }
            }

        }

还有一些其他内容需要通过,并且该信息显示在数据库中,并且在我的表模型中也显示为未选中。

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

1 个答案:

答案 0 :(得分:2)

你永远不会检查featureCheck的状态里面 ActionListener,而是在代码创建的监听器之前,在用户有机会检查它之前。相反,在ActionListener内部,您将检查布尔变量featuresCheck的状态,并且当复选框的状态发生变化时,其状态不会神奇地改变。解决此问题:检查需要其值的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
            }
        }
    }