Проверьте оба JCheckBox и JButton в Java

#java #eclipse

#java #eclipse

Вопрос:

Итак, я закончил работу над интерфейсом для своей программы, но теперь мне нужно заставить мою программу что-то делать. Я уже некоторое время использую Java, но некоторые вещи (например, этот) все еще очень новы для меня

Я провел тщательный поиск здесь, на других сайтах и на веб-сайте Oracle. Но самым близким, что я смог найти к тому, что мне нужно, был этот точный вопрос, только для JavaScript.

У меня есть кнопка и 17 флажков.

Что мне нужно сделать (для каждого отдельного флажка), это проверить, установлен ли флажок, и если это так, также проверьте, нажата ли кнопка (кстати, это не кнопка переключения). А затем запустите код.

Теперь, чтобы в коде было как можно меньше строк, я надеялся сделать что-то вроде вызова основного кода в другом файле .class, который был бы кодом, который выполняется, если кнопка и флажок возвращают значение true. Вместо вставки кода для каждого отдельного флажка логическое значение.

Проще говоря, это то, что мне нужно:

 If (JCheckBox is checked) {
    If (JButton is pressed) {
       Call other .class file
  }
}

else {

}
  

Теперь это должно было бы проходить под каждым отдельным флажком, и мне нужно было бы проверять наличие кнопки каждый раз. Таким образом, в качестве альтернативы, я мог бы просто поместить весь код для логических значений под кодом JButton и сохранить много строк. Но я не знаю, возможно ли проверить наличие одного объекта в блоке кода другого объекта.

Вот фрагмент кода для кнопки и одного из флажков.

 //"Clean" button
JButton btnClean = new JButton("Clean");
    btnClean.setBounds(244, 149, 100, 50);
    btnClean.setFont(new Font("Arial", Font.PLAIN, 20));            
    panel_Clean.setLayout(null);
    panel_Clean.add(btnClean);

//Checkbox "Temporary Files" (Registry)
JCheckBox chckbxTemporaryFilesRegistry = new JCheckBox("Temporary Files");
chckbxTemporaryFilesRegistry.setBounds(12, 80, 162, 15);
panel_Destination.add(chckbxTemporaryFilesRegistry);
  

Итак, из псевдокода над этим фрагментом вы можете видеть, что я хочу поместить набор инструкций «if» либо в флажок, либо в блок кода кнопки. В зависимости от того, какой из них будет более эффективным, а затем вызовите другой файл класса, который находится в той же папке, что и основной файл класса (тот, который создает интерфейс).

Ответ №1:

Вы можете использовать ActionListener. Этот прослушиватель запускает некоторый код при нажатии кнопки. Сначала убедитесь, что вы внедрили ActionListener

 implements ActionListener
  

Затем добавьте кнопку в прослушиватель действий.

 btnClean.addActionListener(this);
  

Теперь вы можете отредактировать свой метод actionPerfomed

  public void actionPerformed (ActionEvent ae){
    if(chckbxTemporaryFilesRegistry.isSelected()){
      //dosomething
    }

}
  

Я надеюсь, что это решит вашу проблему. Хорошего дня.

Комментарии:

1. Ваш ответ очень помог, но я не уверен, куда бы я поместил

2. Ваша среда разработки должна выдать ошибку и предоставить вам решение для добавления метода.

3. JCheckBox chckbxTemporaryFilesRegistry = новый JCheckBox («Временные файлы»); удалите JCkeckBox в начале. А затем напишите под своим объявлением класса JCheckBox chckbxTemporaryFilesRegistry;

4. Я уже пытался объяснить это выше вашего последнего комментария. Речь идет о диапазоне допустимости. Если вы объявляете переменную в методе, вы можете получить доступ к переменной только внутри метода.

5. Хорошо, спасибо за разъяснение. 🙂 Кроме того, мне не нравится быть этим парнем… Но вы неправильно написали «Временный». 😉

Ответ №2:

Вы могли бы использовать chckbx.isSelected() для флажка, но для кнопки вам придется использовать, EventListener например, ActionListener или MouseListener