#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