Несколько кнопок и несколько слушателей делают различные операции Java Swing - PullRequest
0 голосов
/ 28 марта 2012

Как я могу иметь несколько кнопок и несколько слушателей, выполняющих различные операции в Java Swing.Вот пример того, что у меня есть, я могу перенаправить в класс AddStudent, но кнопка перенаправления в класс AddAdult не перенаправит в класс AddAdult.

private class ButtonHandler implements ActionListener {
  // handle button event
  public void actionPerformed( ActionEvent Student ) {
    if ( Student.getSource() == button1 ){
      try {
        AddStudent newmember = new AddStudent();
        newmember.setVisible( true );
      } catch ( Exception e1 ) {
        e1.printStackTrace();
      }
  }
}


public void actionPerformed( ActionEvent Adult ) {
  if ( Adult.getSource() == button2 ){
    try {
      AddAdult newmember = new AddAdult();
      newmember.setVisible( true );
    } catch ( Exception e1 ) {
      e1.printStackTrace();
    }
  }
}

Спасибо за любую помощь заранее.*

Ответы [ 3 ]

4 голосов
/ 28 марта 2012

Вы можете прикрепить ActionListener к каждому JButton, как описано в учебнике Swing для кнопок

Таким образом, вы получите что-то вроде

JButton firstButton = ...;
firstButton.addActionListener( myFirstButtonActionListener );

JButton secondButton = ...;
secondButton.addActionListener( mySecondActionListener );

//add them to a UI
contentPane.add( firstButton );
contentPane.add( secondButton );

Чтобы получить более конкретные вопросы о вашей программе и вашей кнопке, вам необходимо предоставить нам больше кода, чем доступно в настоящее время в вашем вопросе (другими словами, отправьте SSCCE )

1 голос
/ 28 марта 2012

у вас есть еще три способа

1) использовать Swing Action

       myPanel.add(new JButton(new AbstractAction("some narrative") {

            private static final long serialVersionUID = 1L;

            @Override
            public void actionPerformed(ActionEvent e) {
                //some stuff
            }
        }));

2) использовать внутренний ActionListener

код

myButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent ae) {
        //some stuff
    }
});

3) использовать EventHandler

1 голос
/ 28 марта 2012

Если вы хотите иметь несколько обработчиков, вы можете определить несколько классов, каждый из которых реализует интерфейс ActionListener с соответствующей логикой, и прикрепить его к соответствующим кнопкам.Если вы хотите использовать один обработчик для всех кнопок, вы можете использовать метод getActionCommand () (более понятный, чем использование getSource ()) в ActionEvent, чтобы проверить текст кнопки и соответствующим образом реализовать логику обработки, используя if else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...