Rozróżnienie zdarzeń

0

Witam, jestem początkujący w Javie, więc proszę o łopatologiczne odpowiedzi :)
Tak więc do rzeczy:
Napisałem taką prostą aplikację, w skład której wchodzą dwa przyciski. Po kliknięciu na którykolwiek z nich program się wyłącza.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;


public class Main {
    public static void main(String[] args) {
        Okno okno = new Okno();
    }
}


class Okno extends JFrame implements ActionListener {
    public Okno(){
        setTitle("Moja pierwsza aplikacja okienkowa w Javie");
        setSize(500, 350);
        
        JPanel panel = new JPanel();
        JButton button = new JButton("Kliknij na mnie");
        button.addActionListener(this);
        panel.add(button);

        JButton button2 = new JButton("2");
        button2.addActionListener(this);
        panel.add(button2);

        getContentPane().add(panel);

        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent ae){
           System.exit(0);
    }
}

Chciałem zrobić tak, aby po kliknięciu w przycisk "2" program się nie wyłączał (po prostu, żeby nie wykonywał żadnej akcji).
Teraz moje pytanie: w jaki sposób mogę zorientować się, który przycisk został użyty?

Pozdrawiam :)

0

Metoda getSource()

np:

    JButton button2;
    public void actionPerformed(ActionEvent ae){
           if(ae.getSource()==button2)
                  System.exit(0);
    }

Warunek tylko taki, że musisz mieć dostęp do tego obiektu, który dodałeś

Inny sposób, to komenda akcji:
konstruktor:

        JButton button2 = new JButton("2");
        button2.addActionListener(this);
        button2.setActionCommand("Zamknij");
    JButton button2;
    public void actionPerformed(ActionEvent ae){
           if(ae.getActionCommand().equals("Zamknij"))
                  System.exit(0);
    }

ten sposób nie wymaga dostępności do obiektu, bo używasz komend.

Dla ciekawostki, w moim programie używam stosu komend, np: manage/save/export, przy czym każda z tych części wywołuje kolejno metodę obiektu do zarządzania, ta otrzymuje info że ma zapisać, a potem w metodzie do zapisywania czyta, czy to ma być zwykły zapis, czy export. Po prostu podzieliłem na tablicę (split("/")).

1 użytkowników online, w tym zalogowanych: 0, gości: 1