2011-07-19 41 views
1

我有這種基於SOAP的web服務在Java中實現,其中客戶端有一個複選框列表,他選擇後將存儲在數據庫中。例如,對於Sex(maschio,femmina) )他可以選擇他們兩個或其中之一,我這樣實現它,但問題是該數組在這種情況下有固定大小2,所以如果用戶只選擇其中一個sexarra [0]將包含它,但sexarra [1 ]將爲空,所以如果我將它傳遞給服務器,它可能會產生問題,其他複選框的尺寸要大得多,有沒有更好的方法來處理這種情況?預先感謝您的幫助,真的很感激!我要補充一點的System.out僅用於測試:如何檢索多個複選框的值Java

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]); 
} 
+0

我編輯了你的代碼和代碼標籤,如果不正確請回復 – mKorbel

回答

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 感謝大家花時間看我的問題

2

請閱讀How to Use Buttons, Check Boxes, and Radio Buttons,如果有大量的checkboxes那麼你必須閱讀How to Use the ButtonGroup Component,東西長約Action Listener,你可以找到例子here

+0

感謝您的回答,我已經閱讀關於你發佈的主題,我不能使用buttongroup,因爲它不應該是相互的獨家我的問題是,當我從複選框中獲取數據並想要存儲它時,我不知道如何處理它應該存儲的數組,因爲如果選擇了一個元素,其他元素的佔位符將是空的,因爲陣列具有固定的大小。 – tutak

0

你不需要任何事件處理程序。

如果您確實需要填充某些數組,那麼只有在您最終提交數據時才執行此操作。每個按鈕都知道它的狀態;每次點擊一個按鈕時都不需要在另一個數據結構中冗餘地存儲這些信息。

最後,提交的最終數據時:

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

而是在你的代碼打印出來的,你只需填寫,當你準備提交的任何數據結構要發送到數據庫。

您還應該考慮同步:您希望在Swing EDT上運行一種方法來填充您的數據結構,但在另一個線程上使用其他方法將其發送到數據庫。並且以某種方式您必須確保數據在兩個線程之間同步。