#java #swing #user-interface #jbutton #actionlistener
#java #swing #пользовательский интерфейс #jbutton #actionlistener
Вопрос:
У меня есть эти два метода:
private void bcsButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DefaultListModel model = new DefaultListModel<>();
for (Subject s : cCores) {
coreSubjectsList.setModel(model);
model.addElement(bcs.displayCores(s));
}
record1 = new Record(bcs.getCourseName());
ArrayList cores = new ArrayList<>(Arrays.asList(cCores));
record1.enrolCores(cores);
DefaultListModel model2 = new DefaultListModel<>();
for (Major m : BCSMajors) {
majorsList.setModel(model2);
model2.addElement(bcs.displayMajors(m));
}
DefaultListModel model3 = new DefaultListModel<>();
for (Subject s : cEles) {
this.electivesList.setModel(model3);
model3.addElement(bcs.displayElectives(s));
}
}
private void enrolButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String text = this.studNumberField.getText();
int studentNumber = Integer.parseInt(text);
String selection = group.getSelection().getActionCommand();
Student stud1 = new UnderGraduate(this.studentNameTextField.getText(), studentNumber, selection, this.dobField.getText(), "");
if (stud1 instanceof UnderGraduate) {
((UnderGraduate) stud1).writeFileUnderGrad();
record1.setStatus(Record.Status.ACTIVE);
record1.writeRecordFile();
}
}
Для кнопки регистрации я хочу доказать, что если выбран bcsButton, и я нажимаю enrol , он выполнит то, что находится внутри метода enrol. Потому что позже я хочу создать другую кнопку с именем mcsButton и сделать два случая, чтобы, если выбран mcsButton, он выполнял «код регистрации для mcs», а если выбран bcsButton, он выполнит «код регистрации для bcs». Есть ли какой-либо конкретный способ, которым я могу это сделать? Спасибо.Я пытался использовать что-то вроде:
if(evt.getSource() == bcsButton){
//put my code here
}
Однако он ничего не запускает.
Ответ №1:
и сделайте два случая, чтобы, если выбран mcsButton, он выполнял «код регистрации для mcs», а если выбран bcsButton, он выполнит «код регистрации для bcs».
Обычно JRadioButton
для этого используется a . Пользователь может выбрать только одну из двух кнопок, которые были добавлены в ButtonGroup
.
Затем в вашей кнопке «Зарегистрироваться» вы проверяете, какая кнопка была выбрана, и выполняете соответствующую логику. Код ActionListener будет выглядеть примерно так:
if (mcsButton.isSelected())
processMCSEnrol();
else if (bcsButton.isSelected())
processBCSEnrol();
Прочитайте раздел из руководства Swing о том, как использовать переключатели, для получения дополнительной информации и рабочих примеров.
Редактировать:
Вам нужна переменная, скажем, mcsSelected
.
В ActionListener для «mcsButton» вы добавляете:
mcsSelected = true;
В ActionListener для «bcsButton» вы добавляете:
mcsSelected = false;
В «Enrol» ActionListener вы добавляете:
if (mcsSeleced)
processMCS();
else
processBCS();
Комментарии:
1. Я должен использовать JButton, есть ли способ реализовать то, что мне нужно, с помощью двух jbuttons?
2. @TalonRake213, это нелепое требование. У JButton нет постоянного состояния. Каждая кнопка работает независимо от других кнопок во фрейме. Пользователь не имеет никаких сведений о том, какая кнопка была нажата. Они могут легко забыть. См. Редактирование.
3. Спасибо за вашу помощь и идею. Я действительно ценю это.