В настоящее время я сталкиваюсь с проблемой, когда я могу добавить флажок на экран, и при нажатии он меняет местами между состояниями по мере необходимости, но когда дело доходит до использования данных выбора, чтобы делать что-то, он всегда возвращает исходное значение, будь то true или false;JCheckBox всегда возвращает True/False, но не меняет
Мой первый фрагмент кода использовался только с помощью isSelected(); метод внутри оператора if, который постоянно запускается каждый тик. SVelRand мой флажок, который я создаю с помощью:
SVelRand = new JCheckBox("Random", true);
SVelRand.setBounds(50, 30, 90, 20);
Затем код проверки, как показано ниже:
boolean sel = SVelRand.isSelected();
if(sel){
System.out.print("Selected");
}else{
System.out.print("Not Selected");
}
Когда я нашел, что это не работает, я пытался реализовать пункт слушателя под где я создаю jcheckbox, но он по-прежнему продолжает возвращать исходное значение.
SVelRand.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
System.out.println(SVelRand.isSelected());
}
});
Я также рисунок этикетки и JTextField к той же панели перед добавлением его к раме упаковывают, что имеет какие-либо подшипники. И причина, по которой я использую setBounds, а не макет, - это то, что я могу добавить каждый компонент в точные местоположения для достижения нестандартного макета.
Любая помощь будет оценена по достоинству;
Спасибо Кучи, теперь он отлично работает. Все еще запутал меня, почему встроенный метод не работал, но я собираюсь придерживаться этого метода. – user1690395
Почему поле? Вы вводите дополнительную ненужную сложность. Почему бы не проверить состояние, хранящееся в объекте ItemEvent, так как он содержит необходимую информацию? 'if (e.getStateChange() == ItemEvent.SELECTED)' все, что необходимо –