这是我的GUI中的ButtonListener类。我有几个按钮,点击后,我想为每个按钮调用一个特定的方法,例如:
public class ButtonListener implements ActionListener{
public void actionPerformed( ActionEvent event ){
if (event.getSource( ) == buttonA)
如果选择了按钮A,我想调用一个方法并显示其返回语句。
答案 0 :(得分:1)
(如果我理解正确的话)
你可以
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttonA)
{
ButtonAImpl x = new ButtonAImpl();
x.myMethod();
}
if (e.getSource() == buttonB)
{
ButtonBImpl y = new ButtonBImpl();
y.myMethod();
}
}
你可能想看一些设计模式来帮助这个场景......
MVC - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
MVP - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter
答案 1 :(得分:0)
如果我理解,你应该做以下(只是一个例子):
class X{
JButton firstButton;
JButton secondButton;
public X(){
firstButton=new JButton("first");firstButton.setActionCommand("FB");
secondButton=new JButton("second");secondButton.setActionCommand("SB");
}//constructor closing
public void method1(){}
public void method2(){}
class EventHandler extends ActionListener{
public void ActionPerformed(ActionEvent e){
String action=e.getActionCommand();
if(action.equals("FB"))method1();
else if(action.equals("SB"))method2();
}//
}//inner-class closing
}//calss closing
答案 2 :(得分:0)
我认为在这种情况下使用开关是一种很好的做法,因为你说过你有几个按钮。
public void actionPerformed(ActionEvent e) {
switch (e.getSource())
case buttonA:
buttonACode();
break;
case buttonB:
buttonBCode();
break;
default:
someDefaultAction();
break;
}
如果您想显示返回的结果,可以将buttonACode();
替换为System.out.println(buttonACode());