1

私はこのSOAPベースのWebサービスをJavaで実装しており、クライアントはチェックボックスのリストを持っており、選択するとDBに保存されます。たとえば、Sex(maschio、femmina)のチェックボックスの場合、両方または1つを選択できます。私はこのように実装しましたが、問題はこの場合2の配列のサイズが固定されているため、ユーザーがそのうちの1つだけを選択すると、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]);
}  
4

3 に答える 3

2

ボタン、チェックボックス、ラジオボタンの使用方法をお読みください。ボタンがたくさんある場合は、アクションリスナーに関するボタングループコンポーネントの使用方法をおcheckboxes読みください。ここで例を見つけることができます。

于 2011-07-19T19:26:01.353 に答える
0

さて、私は私が抱えていた問題を解決しました。チェックボックスの1つが選択されるたびに更新される整数の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 に答える
0

イベントハンドラは必要ありません。

一部の配列にデータを入力する必要がある場合は、最終的にデータを送信するときにのみ入力してください。各ボタンはその状態を知っています。ボタンがクリックされるたびに、この情報を別のデータ構造に冗長に保存する必要はありません。

最後に、最終的なデータを送信する場合:

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

コードを印刷する代わりに、送信する準備ができたら、DBに送信するデータ構造を入力するだけです。

また、同期についても考慮する必要があります。SwingEDTで実行される1つのメソッドでデータ構造を埋め、別のスレッドで他のメソッドでそれらをDBに送信する必要があります。そしてどういうわけか、データが2つのスレッド間で同期されていることを確認する必要があります。

于 2011-07-19T20:41:41.260 に答える