Предположим, вы хотите закрыть приложение Java с помощью пункта меню «Закрыть приложение».
3 возможных решения (с использованием ActionListener или MouseAdapter или MouseListener):
menuItemClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
});
menuItemClose.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});
menuItemClose.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
3 решения, и только первый срабатывает.
Чем это объясняется?
Есть ли у некоторых других компонентов такое же поведение?
Как правильно обрабатывать события в таких случаях?