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