Java. Не срабатывают ситуации с разными checkbox
Коллеги, подскажите, почему в данном случае срабатывают только блоки if и else, все ситуации с установкой чекбоксов в других местах (всё прописано в else if) программа не видит. Поэтому два варианта: либо стоят все галки (if) - программа работает, либо срабатывает блок else. Остальной код не прикладываю, т.к. всё работает..
@Override
public String toString() {
if (Window.isSelTitle == true && Window.isSelLink == true && Window.isSelDescr == true)
return title + " " + link + " " + description;
else if (Window.isSelTitle == true && Window.isSelLink == true && Window.isSelDescr == false)
return title + " " + link;
else if (Window.isSelTitle == true && Window.isSelLink == false && Window.isSelDescr == false)
return title;
else if (Window.isSelTitle == false && Window.isSelLink == true && Window.isSelDescr == false)
return link;
else if (Window.isSelTitle == false && Window.isSelLink == false && Window.isSelDescr == true)
return description;
else if (Window.isSelTitle == false && Window.isSelLink == true && Window.isSelDescr == true)
return link + " " + description;
else if (Window.isSelTitle == true && Window.isSelLink == false && Window.isSelDescr == true)
return title + " " + description;
else return title;
}
код чекбоксов
//Чекбокс #1
JCheckBox checkBoxTitle = new JCheckBox("Title", true);
checkBoxTitle.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
isSelTitle = checkBoxTitle.isSelected();
System.out.println(isSelTitle);
}
});
//Чекбокс #2
JCheckBox checkBoxLink= new JCheckBox("Link", true);
checkBoxLink.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
isSelLink = checkBoxLink.isSelected();
System.out.println(isSelLink);
}
});
//Чекбокс #3
JCheckBox checkBoxDescr = new JCheckBox("Description", false);
checkBoxDescr.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
isSelDescr = checkBoxDescr.isSelected();
System.out.println(isSelDescr);
}
});
Ответы (1 шт):
Автор решения: mrprogre
→ Ссылка
Починил, дело было в булеан переменных. Помогло логирование увидеть, что эти переменные не менялись в зависимости от чекбоксов. Всем советую писать что-то типа: System.out.println("what?? " + isSelTitle +" " + isSelLink + " " + isSelDescr);
@Override
public String toString() {
if (isSelTitle && isSelLink && isSelDescr) return title + " " + link + " " + description;
else if (isSelTitle && isSelLink && !isSelDescr) return title + " " + link;
else if (isSelTitle && isSelLink && !isSelDescr) return title + " " + link;
else if (!isSelTitle && isSelLink && isSelDescr) return link + " " + description;
else if (isSelTitle && !isSelLink && isSelDescr) return title + " " + description;
else if (isSelTitle && !isSelLink && !isSelDescr) return title;
else if (!isSelTitle && isSelLink && !isSelDescr) return link;
else if (!isSelTitle && !isSelLink && isSelDescr) return description;
else if (!isSelTitle && !isSelLink && !isSelDescr) return title;
else return title;
}