从复选框中获取值

时间:2013-10-24 14:47:57

标签: java swing

我有5个复选框,分别是星期一,星期二,星期三,星期四,星期五。 当我们选择任何一个复选框时,我试图从这些复选框中获取值。 但我意识到,当所有这些都没有被选中时,未选中的那些在我打印时会有空值。如何只打印选中的值而不使用空值。那就是当我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 = "";
   }        
}                           

2 个答案:

答案 0 :(得分:0)

它返回null,因为只有当CheckBox更改状态时,所有这些变量“mon”,“tue”,“wed”等等才会被设置为空。

试试这个:

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;
}

我们在这里做的是验证当前面板的所有组件,如果组件是复选框并被选中,那么我们将它的文本添加到字符串“days”。

答案 1 :(得分:0)

解决方案实际上很简单。在类上下文中声明tue, wed, mon等,初始化为空String ""。所有null都会消失。例如:

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

}