如何知道我的程序中何时发生了一个动作

时间:2011-12-01 15:26:38

标签: java swing actionlistener

我在java中编写了一个程序,并使用了几个在我的程序中执行操作的组件(actionListener)。 我想知道这个组件何时发生了什么动作。例如,当我单击按钮或菜单项时,请调用方法。

public class ButtonFrame extends JFrame
{
   private JButton plainJButton; // button with just text
   private JButton fancyJButton; // button with icons

   public ButtonFrame()
   {
      super( "Testing Buttons" );
      setLayout( new FlowLayout() ); // set frame layout

      plainJButton = new JButton( "Plain Button" ); 

      add( plainJButton ); 


      fancyJButton = new JButton( "Fancy Button"); 

      add( fancyJButton );

      // create new ButtonHandler for button event handling
      ButtonHandler handler = new ButtonHandler();
      fancyJButton.addActionListener( handler );
      plainJButton.addActionListener( handler );
   } 


   private class ButtonHandler implements ActionListener
   {

      public void actionPerformed( ActionEvent event )
      {
         JOptionPane.showMessageDialog( ButtonFrame.this, String.format(
            "You pressed: %s", event.getActionCommand() ) );
      } 
   } 
}

2 个答案:

答案 0 :(得分:1)

使用event.getSource()区分已注册的组件。

示例 -

if(plainJButton == event.getSource()){
    // do stuff (e.g. show message dialog, invoke method, and etc.)
}
else if(fancyJButton == event.getSource()){
    // do stuff (e.g. show message dialog, invoke method, and etc.)
}
else{
    // ut-oh..time to panic!
}

答案 1 :(得分:0)

您可以在活动中使用getSource()