如果在Java swing中选择了另一个jbutton,如何根据所执行的按钮动作来说明情况呢?

问题描述

我有以下两种方法

    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();
}
  

}

对于enroll按钮,我想说明一种情况,如果选择了bcsButton,然后单击enrol,它将执行enroll方法中的内容。因为稍后我要创建另一个名为mcsButton的按钮,并给出两种情况,即如果选择了mcsButton,它将执行“ mcs的注册代码”,如果选择了bcsButton,它将执行“ bcs的注册代码”。有什么特别的方法可以做到吗?谢谢。我尝试使用类似的方法

   if(evt.getSource() == bcsButton){
//put my code here
}

它什么也没运行。

解决方法

并给出两种情况,如果选择了mcsButton,它将执行“ mcs的注册代码”;如果选择了bcsButton,它将执行“ bcs的注册代码”。

通常,您会使用JRadioButton。用户只能选择已添加到ButtonGroup的两个按钮之一。

然后在“注册”按钮中进行检查,以查看已选择了哪个按钮并执行适当的逻辑。 ActionListener代码类似于:

if (mcsButton.isSelected())
    processMCSEnrol();
else if (bcsButton.isSelected())
    processBCSEnrol();

阅读How to Use Radio Buttons的Swing教程中的部分,以获取更多信息和工作示例。

编辑:

您需要一个变量,例如mcsSelected

在“ mcsButton”的ActionListener中添加:

mcsSelected = true;

在ActionListener的“ bcsButton”中添加:

mcsSelected = false;

在“ Enrol” ActionListener中添加:

if (mcsSeleced)
    processMCS();
else
    processBCS();