JButton klick simulieren

Sobald du mit deiner Maus auf den Button klickst und diesen wieder loslässt wird dies erkannt. Die Ausgabe folgt.

Mit dem MouseListener lassen sich tolle Buttons schnell selber entwerfen.

Ich empfehle allen den jdk1.6.0_02 Orden zu öffnen und dort auf demo und dann auf applets.html zu klicken. Tolle Beispiele von Sun Microsystems.
 
Mir ist schon klar wie ein Mouselistner funktioniert. Aber ich glaube nicht das du genau weist was ich versuche. Aber gerne nochmal in Stichpunkten.

1. Ich habe einen Button
2. Wenn ich auf die Taste 'h' drücke soll der Button eingedrückt werden, aber es soll keine Action erfolgen
3. wenn ich mit der Mouse auf den button clicke soll er eingedrückte werden und "Hello World" ausgeben.
 
Genau da lässt sich nämlich mit dem ActionListener und KeyListener realisieren. Damit wären wir wider am Anfang des Beitrages.


Ich Bitte jemanden mich entweder zu bestätigen, damit Busi sieht das es damit möglich ist, oder seine Meinung zu schreiben.
TheBodo ist derselben Meinung wie ich. Ob eine Action ausgeführt werden soll oder nicht lässt sich übrigens auch festlegen, es lässt sich sogar festlegen wo (in welcher Class oder Methode) dies stattfinden soll.
 
Zuletzt bearbeitet:
Die Idee ist gut, aber leider geht es nicht. Sehr schade.

Mein Code funktioniert schon :) Das Problem liegt beim Registrieren des KeyListeners, der lässt sich nicht so einfach dem JFrame zuweisen.

Du siehst, dass es funktioniert, wenn Du den KeyListener dem Button hinzufügst.
Java:
b.addKeyListener(this);
 
OK, danke matdacat!

Es geht! Um eine Lösung zu Verfügung zu stellen hier der LÖSUNGSCODE

Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class test extends JFrame implements ActionListener, KeyListener{
    public JButton b;
    public test(){
        b = new JButton("Drücken");
        b.addActionListener(this);
        b.setFocusable(false);
        this.getContentPane().add(b);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 400);
        this.addKeyListener(this);
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        System.out.println("Hello World");
    }
    public void keyTyped(KeyEvent e) {
        ActionListener [] a = b.getActionListeners();
        for(int i=0;i<a.length;i++)b.removeActionListener(a[i]);
        b.doClick();
        for(int i=0;i<a.length;i++)b.addActionListener(a[i]);
    }
    public void keyPressed(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
}
 
Zuletzt bearbeitet:
Hallo,

also ich glaube die eine Zeile einzufügen ist nicht das Problem, da du ja eine ähnliche Zeile schon oben drin hast.

Du weißt einmal den Actionlistener dem Button hinzu. Das gleiche musst du halt auch mit dem KeyListener machen, damit der Button auch auf Tastatur-Eingaben reagieren kann.

MFG

zEriX
 
Zurück