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