# Ein Actionaufruf durch Entertaste oder Buttonklick?



## berny76 (7. Dez 2007)

Ich beschreibe mal das Ziel:
Ein Benutzer soll die Möglichkeit haben einen String in ein Textfeld einzugeben und diesen zu bestätigen sowohl durch Buttonklick als auch durch Drücken der Entertaste. Das ganze findet in einem Richclient statt.

Das jTextField habe ich. Den jButton auch. Durch Klicken des Buttons wird eine Action aufgerufen. So weit so gut. Nur wie wird möglichst diese gleiche Action durch die Entertaste aufgerufen? Wie programmiert man das sauber? Denn irgendwie würde ich es schon hinbekommen, nur will ich das nicht irgendwie haben


----------



## SlaterB (7. Dez 2007)

http://www.java-forum.org/de/viewtopic.php?t=59851


----------



## berny76 (7. Dez 2007)

```
jTextFieldNewItem = new javax.swing.JTextField();

        jButtonNewItem = new javax.swing.JButton();
        jButtonNewItem.setText("add");
        jButtonNewItem.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                //tue etwas mit der Eingabe
            }
        } );
```


----------



## Guest (7. Dez 2007)

Huch, ging ja schnell   

Dann müsste ich aber den ActionListenener nciht wie oben schreiben, sondern als eigene Class separat, ja?


----------



## SlaterB (7. Dez 2007)

weil beide denselben Listener haben sollen oder warum?
es geht z.B.

```
ActionListener a =new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                //tue etwas mit der Eingabe
            }
        };

        jTextFieldNewItem.addActionListener(a);
        jButtonNewItem.addActionListener(a);
```
oder auch zwei Listener die jeweils nur die gleiche Operation aufrufen


----------



## bern76 (7. Dez 2007)

Ok, nun habe ich es begriffen   

Ich rufe dann nur eine Methode auf anstatt den auszuführenden code da gleich reinzuschreiben.

Habe es jetzt so:


```
jTextFieldNewItem = new javax.swing.JTextField();
        jTextFieldNewItem.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                tueEtwas();
            }
        } ); 


        jButtonNewItem = new javax.swing.JButton();
        jButtonNewItem.setText("add");
        jButtonNewItem.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                tueEtwas();
            }
        } ); 
    
private void tueEtwas() {
        //tue etwas mit der Eingabe   
}
```


----------



## *Hendrik (7. Dez 2007)

Du kannst auch einen DefaultButton setzen, dessen Event beim Drücken von Enter ausgelöst wird.

```
getRootPane().setDefaultButton(deinButton);
```

java.sun.com/javase/6/docs/api/javax/swing/JRootPane.html#setDefaultButton(javax.swing.JButton)


----------



## Wildcard (7. Dez 2007)

Nicht beim drücken von Enter, sondern beim drücken der Taste die laut den Vorgaben des L'n'F die Default Action auslöst. Bei allen mir bekannten Systemen != Windows ist das die Leertaste.


----------

