JCheckBox总是返回真/假但不改变

时间:2016-12-15 23:36:01

标签: java return selected jcheckbox

我目前面临一个问题,我可以在屏幕上添加一个复选框,点击后根据需要在状态之间切换,但是当使用选择数据执行操作时,它总是返回原始值,无论是否是或否;

我的第一段代码就是使用isSelected(); if语句中的方法,每个tick都经常运行。 SVelRand是我使用的复选框:

SVelRand = new JCheckBox("Random", true);
    SVelRand.setBounds(50, 30, 90, 20);

然后检查代码如下:

boolean sel = SVelRand.isSelected();

    if(sel){

        System.out.print("Selected");

    }else{

        System.out.print("Not Selected");


    }

当我发现这不起作用时,我试图在我创建jcheckbox的下面实现一个项目监听器,但它仍然继续返回初始值集。

SVelRand.addItemListener(new ItemListener() {
          public void itemStateChanged(ItemEvent e) {
            System.out.println(SVelRand.isSelected());
          }
        });

我还将Label和JTextField绘制到同一个面板,然后将其添加到具有任何轴承的框架中。我使用setBounds而不是布局的原因是我可以将每个组件添加到精确位置以实现非标准布局。

任何帮助将不胜感激;

1 个答案:

答案 0 :(得分:-1)

在你的动作监听器函数中,只需跟踪(类范围)boolean

// way up above everything
public boolean toggleState=false;

// then later
SVelRand.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
  this.toggleState=(!this.toggleState);
  String message=(this.toggleState) ? "checked" : "unchecked";
  System.out.println("Checkbox is "+message);
}
});

如果您默认选中复选框,只需将toggleState的初始值更改为true

即可