Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从复选框中获取值_Java_Swing - Fatal编程技术网

Java 从复选框中获取值

Java 从复选框中获取值,java,swing,Java,Swing,我有5个复选框,分别是星期一、星期二、星期三、星期四、星期五。 我试图在选中这些复选框时从中获取值。 但我意识到,当所有这些都没有被选中时,那些没有被选中的在我打印它时会有空值。如何仅打印选定对象的值,而不打印中间的空值。这就是我做System.out.print的时候;假设我单独选择了星期二和星期四,我得到的响应就像空星期二空星期四空 下面是我所做的 这是密码 private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {

我有5个复选框,分别是星期一、星期二、星期三、星期四、星期五。 我试图在选中这些复选框时从中获取值。 但我意识到,当所有这些都没有被选中时,那些没有被选中的在我打印它时会有空值。如何仅打印选定对象的值,而不打印中间的空值。这就是我做System.out.print的时候;假设我单独选择了星期二和星期四,我得到的响应就像空星期二空星期四空

下面是我所做的

这是密码

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

它返回null,因为所有这些变量都是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中。

解决方案实际上很简单。在类上下文中将tue、wed、mon等声明为空字符串。所有的空值都将消失。例如:

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

}

为什么不将所有的ItemListener合并到一个ItemListener?检查值是否为null,然后打印出来。非常感谢您的帮助Gabriel,我完全按照您的建议做了,但似乎有什么问题。当我试图打印出值时,什么也看不出来。我不知道变量days是否没有得到值。@AgwuChile,也许您的复选框属于另一个JPanel。查看添加复选框的面板,如myPanel.addcheckbox。现在您可以编辑上面的代码了,在这里您可以看到组件c:getComponents对组件c:myPanel.getComponents的更改,并查看它是否有效。非常感谢Gabriel。现在一切正常。非常感谢。没问题,@AgwuChile,您可以检查它作为未来搜索的正确答案。我很高兴能帮上忙