有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JCheckBox始终返回True/False,但不更改

我现在面临一个问题,我可以在屏幕上添加一个复选框,当点击它时,它会根据需要在不同的状态之间切换,但是当涉及到使用选择数据做事情时,它总是返回原始值,无论是真是假

我的第一段代码只是使用isSelected();if语句中的方法,该语句在每次勾选时持续运行。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());
          }
        });

我还在同一个面板上绘制一个标签和JTextField,然后将其添加到具有任何方向的框架中。我之所以使用设置边界而不是布局,是因为我可以将每个组件添加到精确的位置,以实现非标准布局

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    在动作侦听器函数中,只需跟踪(类范围)布尔值

    // 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