# KeyEvent methode an actionEvent methode weiterleiten



## Parasit (24. Apr 2008)

Hallo Allerseits,

ich schreibe gerade ein tool auf den Buttons sind, diese buttons möchte ich gerne auch mit Tasten (Hotkeys)
auslösen. Mein problem dabei ist ich weiss nicht wie ich das ausgelöste keyEvent zurück an den butten gebe damit darauf die zugehörige actionEvent Methode greifen kann. 

hier mal ein ausschnitt:

```
public void init() {

Button b1 = new Button("1");
b1.addKeyListener(this)
b1.addActionListener(this)

//...
}

public void KeyPressed (KeyEvent e) {

if (e.getKeyCode()==KeyEvent.VK_1)
{
//wie gebe ich an dieser stelle an den action listener weiter des buttons weiter
}
}

public void ActionPerformed (Action Event e) {

if ("1".equals(e.getActionCommand()))
{
System.out.println("Button 1 wurde gedrückt")
}
}
```

Diese Methode soll für mehrere Buttons möglich sein: b1,b2,b3...
Bitte helft mir schnell mit google konnt ich irgendwie nichts finden.
Wahrscheinlich sehe ich den wald lauter Bäume nicht :bahnhof: 

Grüße Parasit


----------



## SlaterB (24. Apr 2008)

sowas brauchst du gar nicht, kopiere einfach den Code von der ActionPerformed in eine Operation x()
und rufe  x() sowohl vom ActionListener als auch vom KeyListener aus auf


----------



## Parasit (24. Apr 2008)

Danke erstmal für die schnelle Antwort! Wie erstell ich den die Operation x() und wo rufe ich sie dann auf? Sorry ich bin noch ein ziemlicher neuling auf dem Gebiet


----------



## Gast (24. Apr 2008)

Also du könntest auch einfach die Methode doClick() vom Button aufrufen. Hat den jeder Button einen eigenen ActionListener oder ziehst du einen ActionListener mit verschiedenen Abfragen auf ActionCommands in Betracht wie oben im Code?


----------



## Guest (24. Apr 2008)

ich poste mal den kompletten code:

```
import java.awt.* ;
import java.awt.event.* ;

public class TestFrame extends Frame
    implements ActionListener, WindowListener, KeyListener {

  public TestFrame (String s) {
    super(s);
  }

  public void init() {
    setLayout (new GridLayout(2,6) );

    Button b1 = new Button("1");
    Button b2 = new Button("2");
  
    add(b1);
    b1.addKeyListener(this);
    b2.addActionListener(this);

   	add(b2);
    b2.addKeyListener(this);
    b2.addActionListener(this);
  
    pack();
    setVisible(true);
    addWindowListener(this);
  }

  public static void main (String[] args) {
    TestFrame f = new TestFrame("HotKey Tool v0.1");
    f.init();
  }

  public void keyPressed (KeyEvent e) {
      if (e.getKeyCode()==KeyEvent.VK_ESCAPE) {
        dispose();
        System.exit(0);
    }
    if (e.getKeyCode()==KeyEvent.VK_1) {
    	action();
    }
    if (e.getKeyCode()==KeyEvent.VK_2) {
    	action();
    }
  }
  
  public void actionPerformed (ActionEvent e) {
  action();
  }
  
  
  public void action (){                        //wie kann ich das hier umändern damit der ActionListener weiss
  System.out.println("Button 1");       //welche methode er anwenden soll??
  System.out.println("Button 2");
  }
	
  
  public void windowClosing (WindowEvent e) {
    dispose();
    System.exit(0);
  }
  
  public void windowClosed (WindowEvent e) { }
  public void windowOpened (WindowEvent e) { }
  public void windowIconified (WindowEvent e) { }
  public void windowDeiconified (WindowEvent e) { }
  public void windowActivated (WindowEvent e) { }
  public void windowDeactivated (WindowEvent e) { }
  public void keyTyped (KeyEvent e) {}
  public void keyReleased (KeyEvent e) {}

}
```
Macht diese methode überhaupt sinn?

Die Buttons sollen per Hotkey (Button1=Taste1, Button=Taste2) und per mausklick aktievierbar sein


----------



## Wildcard (24. Apr 2008)

Für soetwas nimmt man Actions und registriert diese Actions sowohl auf den Buttons als auch in der ActionMap. Das Key-Binding wird anschließend in die Input Map eingetragen.
Lesen -> glücklich sein
http://java.sun.com/docs/books/tutorial/uiswing/misc/keybinding.html


----------

