我在面板上有一个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");
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();
}
}
答案 0 :(得分:1)
有多种方法可以实现这一目标......
使用直接方式,将button
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
属性,默认情况下是按钮的文本...
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();
}
}
同样,您为每个按钮提供了一个更简单的actionCommand
属性,但这取决于您。
有关详细信息,请参阅How to Write an Action Listeners和How to Use Buttons, Check Boxes, and Radio Buttons
答案 1 :(得分:0)
+(NSString *)hmacWithIndicies:(NSString *)plaintext withKey:(NSString *)key {
NSLog(@"Input text: %@", plaintext);
NSLog(@"Input Key: %@", key);
NSData *keyData = [[NSData alloc] initWithBase64EncodedString:key options:0];
NSLog(@"keyData Length: %lu, Data: %@", keyData.length, keyData);
NSData *inData = [plaintext dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"inData Length: %lu, Data: %@", inData.length, inData);
NSMutableData *HMACdata = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, keyData.bytes, keyData.length, inData.bytes, inData.length, (void *)HMACdata.bytes);
NSLog(@"Hash Mac data generated: %@", HMACdata);
NSString *b64EncStrHmac = [HMACdata base64EncodedStringWithOptions:0];
NSLog(@"Hash Mac generated: %@", b64EncStrHmac);
return b64EncStrHmac;
}
答案 2 :(得分:0)
public void actionPerformed(ActionEvent e){
if(e.getSource == nameOfYourButton){
//do stuff
)
}