2016-05-26 5 views
-1

Ich habe in letzter Zeit ziemlich viel in Java gelernt, aber etwas nervt mich wirklich. Ich habe gelernt/gelehrt wurde, wie ActionListeners zu verwenden, wenn das Programm einen Konstruktor beinhaltet zum BeispielWelche Parameter werden verwendet, wenn .addActionListener() aufgerufen wird?

public class test extends JFrame implements ActionListener { 
JButton button; 

public test 
{ 
setLayout(null); 
setSize(1920,1080); 
setTitle("test"); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
button = new JButton(""); 
button.setBounds(x,x,x,x); 
button.AddActionListener(this); //What can replace the this parameter here. 
button.setVisible(true); 
add(button); 
} 
public static void main(String[] args) { 
    test testprogram = new test(); 
    test.setVisible(true); 
} 
@Override 
    public void actionPerformed(ActionEvent clickevent) { 
    if (clickevent.GetSource() == button) { 
     //DoSomething 
    } 
} 
+3

werfen Sie einen Blick auf Javadoc – sidgate

Antwort

1

Es kann alles sein, was ActionListener implementiert.

Vielleicht möchten Sie berücksichtigen nicht Ihre Herstellung JFrameActionListener implementieren: Das bedeutet, dass

  1. Es ist ein Teil der Klasse Schnittstelle, die es actionPerformed implementiert; aber Sie wollen wahrscheinlich nicht, dass andere Klassen das direkt aufrufen.
  2. Sie können es nur "einmal" implementieren, so dass Sie am Ende über bedingte Logik verfügen müssen, um festzustellen, was die Quelle des Ereignisses war, und dann entsprechend zu behandeln.

Die Alternative ist eine button -spezifische Aktion Hörer zu schaffen:

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent clickevent) { 
    // Don't need to check if it is from button, nothing else 
    // could have created the event. 
    } 
}); 

und implements ActionListener aus der test Klasse entfernen.

0

Es ist Instanz der Klasse, die ActionEvent zu handhaben wird.

Vom Documents

eine Instanz der als Zuhörer auf einer oder mehr Komponenten Event-Handler-Klasse registrieren. Zum Beispiel:

someComponent.addActionListener (instanceOfMyClass);

+0

Was würde eine Instanz der Klasse betrachtet werden? Ich bin verwirrt darüber, tut mir leid. Wie ich es ursprünglich erwartet hätte, wäre es etwas in der Art von .addActionListener (actionPerformed); – Synergy76

+0

Ein Objekt ....... –

+0

Ja, aber welche Art von Objekt? Wie ein Beispiel wäre hier wirklich nett, ... – Synergy76

Verwandte Themen