Как вы можете создать регистр внутри выполняемого действия кнопки, основанный на выключении, если в java swing выбран другой jbutton?

#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. Спасибо за вашу помощь и идею. Я действительно ценю это.