1

我在 Java 中实现了这个基于 SOAP 的 Web 服务,其中客户端有一个复选框列表,在他选择后将存储在 DB 中。例如,对于 Sex(maschio,femmina) 的复选框,他可以同时选择它们或其中一个我是这样实现的,但问题是在这种情况下数组具有固定大小 2 因此,如果用户仅选择其中一个,则 sexarra[0] 将包含它,但 sexarra[1] 将为空,因此如果我将其传递给服务器它可能会产生问题,并且其他复选框的大小要大得多有没有更好的方法来处理这种情况?提前谢谢大家,非常感谢您的帮助!我应该补充一点 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]);
}  
4

3 回答 3

2

请阅读如何使用按钮、复选框和单选按钮,如果有很多,checkboxes那么您必须阅读如何使用 ButtonGroup 组件,关于动作侦听器的内容,您可以在此处找到示例

于 2011-07-19T19:26:01.353 回答
0

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

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

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

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

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

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

于 2011-07-19T20:41:41.260 回答
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 感谢大家花时间研究我的问题

于 2011-07-20T13:17:41.160 回答