Java 从复选框中获取值
我有5个复选框,分别是星期一、星期二、星期三、星期四、星期五。 我试图在选中这些复选框时从中获取值。 但我意识到,当所有这些都没有被选中时,那些没有被选中的在我打印它时会有空值。如何仅打印选定对象的值,而不打印中间的空值。这就是我做System.out.print的时候;假设我单独选择了星期二和星期四,我得到的响应就像空星期二空星期四空 下面是我所做的 这是密码Java 从复选框中获取值,java,swing,Java,Swing,我有5个复选框,分别是星期一、星期二、星期三、星期四、星期五。 我试图在选中这些复选框时从中获取值。 但我意识到,当所有这些都没有被选中时,那些没有被选中的在我打印它时会有空值。如何仅打印选定对象的值,而不打印中间的空值。这就是我做System.out.print的时候;假设我单独选择了星期二和星期四,我得到的响应就像空星期二空星期四空 下面是我所做的 这是密码 private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
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,您可以检查它作为未来搜索的正确答案。我很高兴能帮上忙