как узнать, когда произошло действие в моей программе - PullRequest
1 голос
/ 01 декабря 2011

Я пишу программу на 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 ]

1 голос
/ 01 декабря 2011

Используйте 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!
}
0 голосов
/ 01 декабря 2011

Вы можете использовать getSource() для события.

...