# Button: Event auslösen



## e9926044 (16. Mrz 2007)

Hallo,

ich habe im Konstruktor der main- Klasse einen Button wie unten in Code angegeben.
Ich möchte jetzt aus einer anderen Klasse einen Event auslösen. Aus einer Methode der main- Klasse gehts mit "addButton.doClick();", aber meine Frage wäre, wie kann ich einen Event aus einer anderen Klasse auf diesen Button auslösen? In der anderen Klasse ein Objekt der main- Klasse machen und mit ObjektmainKlasse.addButton.doClick() funktioniert leider nicht (den addButton habe ich zum Ausprobieren public static gemacht).

Vielen DANK für eure Antworten.

lg
Hannes



```
addButton.addActionListener(new ActionListener()                                           
            {
            public void actionPerformed(ActionEvent e) {   
		try {
                     }
               catch (...
```


----------



## SlaterB (16. Mrz 2007)

das es von main aus geht und von woanders nicht, erscheint sehr merkwürdig,
hat das vielleicht auch was mit dem Zeitpuntk zu tun?
(main = direkt beim Programmstart, woandes = später?)

aber allgemein lohnt es sich für den Anfang auch gar nicht darüber nachzudenken,
programmiere

```
public void actionPerformed(ActionEvent e) { 
   logicObject.doActionXY();
}
```
dann kannst du von woanders genausogut 
   logicObject.doActionXY();
aufrufen, unabhängig vom ActionListener


----------



## André Uhres (16. Mrz 2007)

```
package gui;
/*
 * ButtonClickDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonClickDemo extends JFrame {
    private JButton btTest;
    public ButtonClickDemo() {
        initComponents();
        AndereKlasse andereKlasse = new AndereKlasse(btTest);
    }
    private void initComponents() {
        btTest = new JButton();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        btTest.setText("Test");
        btTest.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                btTestActionPerformed(evt);
            }
        });
        getContentPane().add(btTest, BorderLayout.NORTH);
        pack();
    }
    private void btTestActionPerformed(final ActionEvent evt) {
        System.out.println("btTestActionPerformed");
    }
    public static void main(final String args[]) {
        new ButtonClickDemo().setVisible(true);
    }
}
class AndereKlasse{
    private JButton btTest;
    public AndereKlasse(JButton btTest){
        this.btTest = btTest;
        doIt();
    }
    private void doIt(){
        this.btTest.doClick();
    }
}
```


----------



## e9926044 (16. Mrz 2007)

VIELEN DANK!!!!

lg
Hannes


----------



## e9926044 (16. Mrz 2007)

Hallo,

eine Frage hätte ich noch und zwar wenn ich "this.btTest.doClick();" nicht im Konstruktor auslösen möchte sondern in einer Methode der Klasse AndereKlasse, dann bekomme ich einen Fehler: java.lang.NullPointerException.
Wie kann ich das machen, dass ich  "this.btTest.doClick();" in einer Methode der Klasse AndereKlasse auslöse?

Vielen DANK!!

lg
Hannes




```
class AndereKlasse{
    private JButton btTest;
    public AndereKlasse(JButton btTest){
        this.btTest = btTest;
        this.btTest.doClick();
    }
}
```


----------



## SlaterB (16. Mrz 2007)

na indem du im Konstruktor den Button in der Exemplarvariable speicherst,
steht doch im Beispiel schon da, hast du das etwa rausgelöscht?


```
class AndereKlasse{ 
    private JButton btTest; 
    public AndereKlasse(JButton btTest){ 
        this.btTest = btTest; 
    }
    public void test()
        this.btTest.doClick(); 
    } 
}
```


----------



## André Uhres (16. Mrz 2007)

e9926044 hat gesagt.:
			
		

> ..Wie kann ich das machen, dass ich  "this.btTest.doClick();" in einer Methode der Klasse AndereKlasse auslöse?..


Ich habe den Code jetzt oben in diesem Sinn angepasst.
Aber da ist eigentlich nix Besonderes zu beachten  :shock:

EDIT: Upps! Zu spät


----------



## e9926044 (16. Mrz 2007)

Super danke, das hab ich in der Hektik ganz übersehen!!

lg
Hannes


----------

