# "Enter"-Taste mit Button verknüpfen



## Pummeluff (29. Jan 2010)

Ich möchte gerne den Submit-Button in meinem Programm durch das Betätigen der  Enter-Taste auslösen. Dazu habe ich einen Keylistener an das JFrame zugefügt. Dieser Listener reagiert auch problemlos.
Sobald ich aber Textfelder oder Buttons einfüge reagiert dieser nicht mehr, vermutlich weil der der Focus nicht mehr auf ihn gerichtet ist.

Gibt es da Möglichkeiten den Listener immer aktiv zu halten oder intelligentere Lösung als einen Keylistener?


Keylistener:

```
KeyListener KeyListenerEnter = new KeyListener() {

            public void keyPressed(KeyEvent arg0) {
                System.out.println("Test");
               
            }

            public void keyReleased(KeyEvent arg0) {
            }

            public void keyTyped(KeyEvent arg0) {
            }
           
        };
        addKeyListener(KeyListenerEnter);
```

zufügen des Textfeldes, welches den Keylistener unwirksam macht:


```
add(TextFieldMin, ConstraintTextFieldMin);
```


----------



## nickname (29. Jan 2010)

hi,


			
				Pummeluff hat gesagt.:
			
		

> Gibt es da Möglichkeiten den Listener immer aktiv zu halten


der ist eigentlich immer aktiv, weil er ja "hören" muss.

Du kannst einen Focus mit "requestFocus()" auf ein bestimmtes Objekt erzwingen,
willst.

gruß nickname


----------



## Mujahiddin (29. Jan 2010)

Du kannst jedem Komponenten in deinem JFrame den KeyListener (oder ActionListener bei Enter) zuweisen, ist zwar minimal umständlich, aber ist die einfachste Lösung


```
JTextField hierStehtIhrText = new JTextField();

hierStehtIhrText.addKeyListener(KeyListenerEnter);
```


----------



## Ebenius (30. Jan 2010)

Sowas macht man nicht mit KeyListener sondern über Key Binding: 
	
	
	
	





```
/* $Id$ */

/* Copyright 2010 Sebastian Haufe

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class KeyBindingTestGui {

  static void createAndShowGui() {

    // an action for sending the message
    final Action sendAction = new AbstractAction("Send Message") {

      public void actionPerformed(ActionEvent e) {
        System.out.println("Do your message sending here!");
      }
    };

    // message text field w/ key binding on ENTER my window is focused
    final JTextField textField = new JTextField(40);
    textField.getActionMap().put("sendMessage", sendAction);
    final InputMap im =
          textField.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "sendMessage");

    // send button w/ same action
    final JButton sendButton = new JButton(sendAction);

    // some GUI stuff
    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(textField, BorderLayout.CENTER);
    contentPane.add(sendButton, BorderLayout.LINE_END);

    final JFrame f = new JFrame("Test Frame: KeyBindingTestGui"); //$NON-NLS-1$
    f.setContentPane(contentPane);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      public void run() {
        createAndShowGui();
      }
    });
  }
}
```
Voodoo in Zeile 37ff.

Ebenius


----------

