2013-10-24 187 views
1

我有5個複選框,分別是星期一,星期二,星期四,星期四,星期五。 我試圖從這些複選框中選擇任何一個時獲取Value。 但是我意識到,當他們都沒有被選中時,沒有被選中的那些打印時就會有空值。我怎麼才能打印只有選中一個沒有null值之間的值。這是當我做System.out.print();假設我選擇星期二和星期四獨自我得到的響應像null tuesday null thursday null從複選框中獲取值

以下是我所做的。

這是代碼

private void jButton2MouseClicked(java.awt.event.MouseEvent evt) 
{ 
    System.out.print(mon+ " " +tue+" "+wed +" "+thus+" " +fri); 
    JOptionPane.showMessageDialog(null, mon+ " " +tue+" "+wed +" "+thus+" " +fri); 

}          

private void mondayBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
    if(mondayBox.isSelected()) 
    { 
     mon = mondayBox.getText(); 

    } 
    else 
    { 
    mon = " "; 
    } 
}           

private void tuesdayBoxItemStateChanged(java.awt.event.ItemEvent evt) 
{ 
    if(tuesdayBox.isSelected()) 
    { 
     tue = tuesdayBox.getText(); 
    } 
    else 
    { 
     tue = ""; 
    }// TODO add your handling code here: 
}           

private void wedBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
    if(wedBox.isSelected()) 
    { 
     wed = wedBox.getText(); 
    }else 
    { 
     wed = ""; 
    }  // TODO add your handling code here: 
}          

private void thurBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
    if(thurBox.isSelected()) 
    { 
     thus = thurBox.getText(); 
    }else 
    { 
     thus = ""; 
    }   // TODO add your handling code here: 
}           

private void friBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
if(friBox.isSelected()) 
    { 
     fri = friBox.getText(); 
    }else 
    { 
     fri = ""; 
    }   
}       
+0

爲什麼不將所有ItemListeners組合到一個ItemListener? – Vallentin

+1

檢查值是否爲空然後打印它們 –

回答

0

它返回null,因爲所有這些變量「星期一」,「星期二」,「結婚」等。將被設置爲僅空如果該複選框改變它的狀態。

試試這個:

btnSelected.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       JOptionPane.showMessageDialog(null, getSelected()); 
      } 
     }); 

public String getSelected() { 
    String days = ""; 
    for (Component c : getComponents()) { 
     if (c instanceof JCheckBox) 
      if (((JCheckBox) c).isSelected()) 
       days += ((JCheckBox) c).getText() + ","; 
    } 
    return days; 
} 

我們在這裏所做的是驗證當前面板的所有組件,該組件是一個複選框,並選擇,然後我們加入它的文本字符串「天」 。

+0

非常感謝您的幫助Gabriel,我完全按照您的建議進行了操作,但似乎出現了錯誤。當我嘗試打印出沒有顯示的值時。我不知道如果變量「天」沒有得到的價值。 –

+0

@AgwuChile,也許你的複選框屬於另一個JPanel。看到你添加複選框的面板,就像'myPanel.add(複選框)'。現在你可以編輯上面的代碼,看看for(Component c:getComponents())'for change for(for Component c:myPanel.getComponents())',看它是否有效。 –

+0

非常感謝你Gabriel。它的作品現在很好。非常感激。 –

0

該解決方案實際上很簡單。在您的類上下文中聲明tue, wed, mon等初始化爲空字符串""。所有的null都將消失。例如:

class MyPanel extends JPanel 
{ 
    String tue = ""; 
    String wed = ""; 
    ......... 
    JCheckBox tuesDayBox; 

}