如何从多个复选框Java中检索值

时间:2011-07-19 19:17:19

标签: java swing action jcheckbox

我在Java中实现了这个基于SOAP的Web服务,其中客户端有一个复选框列表,在他选择之后将存储在DB中。例如,对于Sex(maschio,femmina)的复选框,他可以选择它们或者其中一个我实现它像这样,但问题是数组在这种情况下具有固定的大小2所以如果用户只选择其中一个sexarra [0]将包含它但sexarra [1]将为null所以,如果我通过它可以在服务器上创建问题而其他复选框的大小要大得多有没有更好的方法来处理这种情况?提前谢谢大家,非常感谢您的帮助!我应该补充一点,System.out仅用于测试:

private void femminaActionPerformed(java.awt.event.ActionEvent evt) {
    if (femmina.isSelected()) {
        if (sexint == 0) {
            sexint++;
            sexarra[sexint] = femmina.getText();
        } else {
            sexarra[sexint] = femmina.getText();
        }
    }
    System.out.println(sexarra[0]);
    System.out.println(sexarra[1]);
}

private void maschioActionPerformed(java.awt.event.ActionEvent evt) {
    if (maschio.isSelected()) {
        if (sexint == 0) {
            sexarra[sexint] = maschio.getText();
            sexint++;
        } else {
            sexarra[sexint] = maschio.getText();
        }
    }
    System.out.println(sexarra[0]);
    System.out.println(sexarra[1]);
}  

3 个答案:

答案 0 :(得分:2)

请阅读How to Use Buttons, Check Boxes, and Radio Buttons,如果有很多checkboxes,那么您必须阅读How to Use the ButtonGroup Component,有关Action Listener的内容,您可以找到示例here < / p>

答案 1 :(得分:0)

您不需要任何事件处理程序。

如果确实需要填充某些数组,只能在最后提交数据时执行此操作。每个按钮都知道它的状态;每次单击按钮时,无需将此信息冗余地存储在另一个数据结构中。

最后,在提交最终数据时:

System.out.println(jButton1.getName() + ": " + jButton1.isSelected());
System.out.println(jButton2.getName() + ": " + jButton2.isSelected());\
...

您可以在准备提交时填写发送到数据库的任何数据结构,而不是在代码中打印出来。

此外,您应该考虑同步:您需要在Swing EDT上运行的一个方法来填充您的数据结构,而在另一个线程上使用其他方法将这些方法发送到数据库。并且以某种方式你必须确保数据在两个线程之间同步。

答案 2 :(得分:0)

好的我解决了我遇到的问题,我介绍了一个整数sexint,只要选中其中一个复选框就会更新,因此确定数组的大小就是代码:

private void femminaActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(femmina.isSelected()){
        if(sexint==0){
          sexint++;
          sexone=femmina.getText();    
        }
        else if(sexint==1){
            sexint++;
        sextwo=femmina.getText();
        }
        else
            sexint--;

    System.out.println(sexint);        
    }
}                                       

private void maschioActionPerformed(java.awt.event.ActionEvent evt) {       
    if(maschio.isSelected()){
        if(sexint==0){
          sexint++;
          sexone=maschio.getText();
        }
        else if(sexint==1){
            sexint++;
        sextwo=maschio.getText();
        }
        else
            sexint--;

    System.out.println(sexint);
    }
}   

之后我采取sexint并使用它来实例化阵列sexarra 感谢大家花时间看我的问题