1

我有 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 = "";
   }        
}                           
4

2 回答 2

0

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

尝试这个:

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”中。

于 2013-10-24T15:07:33.747 回答
0

解决方案其实很简单。在您的类上下文中声明tue, wed, monetc 初始化为空 String ""。一切null都会过去。例如:

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

}
于 2013-10-24T15:13:06.290 回答