Java 每个JButton都有不同的actionListener
我在面板上有一个JButton数组,当按下某个按钮时,它将触发并初始化一个类。actionlistener怎么知道我按了哪个按钮来初始化那个类呢?谢谢Java 每个JButton都有不同的actionListener,java,jbutton,actionlistener,Java,Jbutton,Actionlistener,我在面板上有一个JButton数组,当按下某个按钮时,它将触发并初始化一个类。actionlistener怎么知道我按了哪个按钮来初始化那个类呢?谢谢 public void generateButton(){ buttons[0]=new JButton("First Grade Math"); buttons[1]=new JButton("First Grade English"); buttons[2]=new JButton("Second Grade Math
public void generateButton(){
buttons[0]=new JButton("First Grade Math");
buttons[1]=new JButton("First Grade English");
buttons[2]=new JButton("Second Grade Math");
buttons[3]=new JButton("Second Grade English");
buttons[4]=new JButton("Third Grade Life Science");
buttons[5]=new JButton("Third Grade Math");
buttons[6]=new JButton("Fourth Grade Science");
buttons[7]=new JButton("Fourth Grade Math");
buttons[8]=new JButton("Fifth Grade Science");
buttons[9]=new JButton("Fifth Grade History");
for( int count=0; count<buttons.length; count++){
buttonPanel.add(buttons[count]);
buttons[count].addActionListener(listenerForButton);
}
add(buttonPanel, BorderLayout.CENTER);
}
class ButtonListener implements ActionListener{
private int buttonNum;
// generate question depend on what button is clicked using switch statement
public void actionPerformed(ActionEvent e){
JButton button1 = (JButton) e.getSource(); //cast object click to JButton variable
switch(buttonNum){ //fulfill loops/conditional
case 0:new FirstGrade("math"); break;
case 1:new FirstGrade("english"); break;
case 2:new SecondGrade("math"); break;
case 3:new SecondGrade("english"); break;
case 4:new ThirdGrade("Science"); break;
case 5:new ThirdGrade("Math"); break;
case 6:new FourthGrade("Science"); break;
case 7:new FourthGrade("Math"); break;
case 8:new FifthGrade("Science"); break;
case 9:new FifthGrade("History"); break;
}
theLayout.buttonClick(button1); //call method to change the color of the button and disable the button from use
checkCondition();
}
}
public void generateButton(){
按钮[0]=新的JButton(“一年级数学”);
按钮[1]=新的JButton(“一级英语”);
按钮[2]=新的JButton(“二年级数学”);
按钮[3]=新的JButton(“二级英语”);
按钮[4]=新的JButton(“三级生命科学”);
按钮[5]=新的JButton(“三年级数学”);
按钮[6]=新的JButton(“四年级科学”);
按钮[7]=新的JButton(“四年级数学”);
按钮[8]=新的JButton(“五年级科学”);
按钮[9]=新按钮(“五年级历史”);
对于(int count=0;count有多种方法可以实现这一点
你可以。。。
使用直接方法,将按钮
s数组中的每个元素与源事件进行比较
public void actionPerformed(ActionEvent e) {
JButton button1 = (JButton) e.getSource(); //cast object click to JButton variable
for (int buttonNum = 0; buttonNum < buttons.length; buttonNum++) {
if (button1 == buttons[buttonNum]) {
switch (buttonNum) { //fulfill loops/conditional
case 0:
new FirstGrade("math");
break;
case 1:
new FirstGrade("english");
break;
case 2:
new SecondGrade("math");
break;
case 3:
new SecondGrade("english");
break;
case 4:
new ThirdGrade("Science");
break;
case 5:
new ThirdGrade("Math");
break;
case 6:
new FourthGrade("Science");
break;
case 7:
new FourthGrade("Math");
break;
case 8:
new FifthGrade("Science");
break;
case 9:
new FifthGrade("History");
break;
}
}
}
theLayout.buttonClick(button1); //call method to change the color of the button and disable the button from use
checkCondition();
}
同样,您可以为每个按钮提供一个更简单的actionCommand
属性,但这取决于您自己
查看和了解更多详细信息名称中包含源代码
的方法是否没有给你任何线索?ActionEvent#getSource
/ActionEvent#getActionCommand
。查看和了解更多详细信息谢谢!这很有意义!因为我还是java的初学者。在现实世界中哪个方法更有用?或者个人而言,我会为每个按钮使用操作
,它是一个独立于按钮的独立工作单元,但按钮可以使用它来配置自身(文本/图标)。有关更多详细信息,请参阅
public void actionPerformed(ActionEvent e){
if(e.getSource == nameOfYourButton){
//do stuff
)
}
public void actionPerformed(ActionEvent e) {
JButton button1 = (JButton) e.getSource(); //cast object click to JButton variable
for (int buttonNum = 0; buttonNum < buttons.length; buttonNum++) {
if (button1 == buttons[buttonNum]) {
switch (buttonNum) { //fulfill loops/conditional
case 0:
new FirstGrade("math");
break;
case 1:
new FirstGrade("english");
break;
case 2:
new SecondGrade("math");
break;
case 3:
new SecondGrade("english");
break;
case 4:
new ThirdGrade("Science");
break;
case 5:
new ThirdGrade("Math");
break;
case 6:
new FourthGrade("Science");
break;
case 7:
new FourthGrade("Math");
break;
case 8:
new FifthGrade("Science");
break;
case 9:
new FifthGrade("History");
break;
}
}
}
theLayout.buttonClick(button1); //call method to change the color of the button and disable the button from use
checkCondition();
}
private JButton[] buttons;
public static final String FIRST_GRADE_MATH = "First Grade Math";
public static final String FIRST_GRADE_ENGLISH = "First Grade English";
public static final String SECOND_GRADE_MATH = "Second Grade Math";
public static final String SECOND_GRADE_ENGLISH = "Second Grade English";
public static final String THIRD_GRADE_MATH = "Third Grade Math";
public static final String THIRD_GRADE_LIFE_SCIENCE = "Third Grade Life Science";
public static final String FOURTH_GRADE_MATH = "Fourth Grade Math";
public static final String FOURTH_GRADE_SCIENCE = "Fourth Grade Science";
public static final String FIFTH_GRADE_SCIENCE = "Fifth Grade Science";
public static final String FIFTH_GRADE_HISTORY = "Fourth Grade History";
public void generateButton() {
buttons[0] = new JButton(FIRST_GRADE_MATH);
buttons[1] = new JButton(FIRST_GRADE_ENGLISH);
buttons[2] = new JButton(SECOND_GRADE_MATH);
buttons[3] = new JButton(SECOND_GRADE_ENGLISH);
buttons[4] = new JButton(THIRD_GRADE_MATH);
buttons[5] = new JButton(THIRD_GRADE_LIFE_SCIENCE);
buttons[6] = new JButton(FOURTH_GRADE_SCIENCE);
buttons[7] = new JButton(FOURTH_GRADE_MATH);
buttons[8] = new JButton(FIFTH_GRADE_HISTORY);
buttons[9] = new JButton(FIFTH_GRADE_SCIENCE);
for (int count = 0; count < buttons.length; count++) {
buttonPanel.add(buttons[count]);
buttons[count].addActionListener(listenerForButton);
}
add(buttonPanel, BorderLayout.CENTER);
}
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
switch (cmd) {
case FIRST_GRADE_MATH:
new FirstGrade("math");
break;
case FIRST_GRADE_ENGLISH:
new FirstGrade("english");
break;
case SECOND_GRADE_MATH:
new SecondGrade("math");
break;
case SECOND_GRADE_ENGLISH:
new SecondGrade("english");
break;
case THIRD_GRADE_LIFE_SCIENCE:
new ThirdGrade("Science");
break;
case THIRD_GRADE_MATH:
new ThirdGrade("Math");
break;
case FOURTH_GRADE_SCIENCE:
new FourthGrade("Science");
break;
case FOURTH_GRADE_MATH:
new FourthGrade("Math");
break;
case FIFTH_GRADE_SCIENCE:
new FifthGrade("Science");
break;
case FIFTH_GRADE_HISTORY:
new FifthGrade("History");
break;
}
theLayout.buttonClick(button1); //call method to change the color of the button and disable the button from use
checkCondition();
}
}