在GUI中调用actionPerformed时如何调用方法

时间:2014-10-20 10:26:19

标签: java events user-interface if-statement

这是我的GUI中的ButtonListener类。我有几个按钮,点击后,我想为每个按钮调用一个特定的方法,例如:

public class ButtonListener implements ActionListener{
        public void actionPerformed( ActionEvent event ){
            if (event.getSource( ) == buttonA)

如果选择了按钮A,我想调用一个方法并显示其返回语句。

3 个答案:

答案 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());