JButton+Keylistner?

Status
Nicht offen für weitere Antworten.
S

Schlaumi Schlumpf

Gast
Hallo i hät da eine Frage wie kann man einem JButton nur einen Buchstaben zuweisen? Das man nur auf in drückt un z.b der Buchstabe A gedrückt wird? Weis jemand wie da der Codel auten mauss i weis irgendwas mit Keylistner aber wie schreibt man das im Code professionel?? TX!
 

mikachu

Top Contributor
also logisch wäre es, wenn du dem jframe nen keylistener verpasst, und bei beispielsweise einem gedrückten 'A' rufst du die doClick()-methode des buttons aus...
aber wie gesagt, dies ist nur aus der logischen sicht, weiß nicht, ob das auch wirklich so gehn tut ;)
 

Xams

Bekanntes Mitglied
Klar geht das, aber warum machst du bei entsprechendem KeyEvent nicht gleich irgendwas?
 
S

Schlaumi Schlumpf

Gast
Sorry bin da noch net so helle wie meint ihr das habt ihr vl. en Beispiel oder so?
 

Fatal Error

Bekanntes Mitglied
Klar geht das, aber warum machst du bei entsprechendem KeyEvent nicht gleich irgendwas?

na wenn ein user dann normal auf den button drücken will?
dann gibts deiner meinung nach keine action?


Code:
final JButton b = new JButton("BlaBla);
b.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e) {
           if (e.getKeyCode() == KeyEvent.VK_1) b.doClick();
    }
});

und dann einfach mit actionlistener programmieren und der button macht beim draufklicken und beim drücken von der bestimmten taste deine action ;)

KeyEvent.VK_1 bewirkt das beim drücken von "1" der button auch gedrückt wird.
schau in der api nach welche möglichkeiten es hier für buchstaben gibt. a müsste ja KeyEvent.VK_A sein.

hoffe das das weiterhilft
 

merlin2

Top Contributor
final JButton b = new JButton("BlaBla);
b.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_1) b.doClick();
}
});
wird nicht compiliert werden, es muss
Code:
final JButton b = new JButton("BlaBla[color=green]"[/color]); 
b.addKeyListener(new Key[color=green]Adapter[/color]() { 
    public void keyPressed(KeyEvent e) { 
           if (e.getKeyCode() == KeyEvent.VK_1) b.doClick(); 
    } 
}); 
heißen.
Edit: Tut mir leid wegen der Codetags, aber ich brauche eben die Farbe.
 

Fatal Error

Bekanntes Mitglied
ach ja, tut mir leid, hab vergessen alle methoden zu implementieren weil ich das inferface KeyListener und net die klasse KeyAdapter benutz hab :oops:
 

merlin2

Top Contributor
Man sollte sich ohnehin überlegen, ob man den KeyListener tatsächlich beim Button anmeldet, da er dann den Fokus braucht.
Wildcard hat da mal was gepostet, mit InputMap und ActionMap...
 

Fatal Error

Bekanntes Mitglied
ja das hab ich mir auch schon gedacht, hab dann aber explizit auf die frage geantwortet.
blöderweise gehts auch nicht mit einem KeyListener am JFrame.
also bleibt nur noch die Input und ActionMap methode übrig, die aber ohnehin die besten lösungen sind
 

merlin2

Top Contributor
Dann geben wir Schlaumi Schlumpf also den Rat, nach Input Map und Action Map zu googeln (es sei denn natürlich, jemand erklärt sich bereit, das zu erklären :lol: ).
 
S

Schlaumi Schlumpf

Gast
mmh als irgendwie bleibt das ding tot also i hab mal diesnes Code verwendet :


Code:
final JButton b = new JButton("BlaBla"); 
b.addKeyListener(new KeyAdapter() { 
public void keyPressed(KeyEvent e) { 
if (e.getKeyCode() == KeyEvent.VK_1) b.doClick(); 
} 
}); 
 aber es passiert nix es lässt sich fehlerfrei übersetzen ???
 

merlin2

Top Contributor
Du brauchst immer noch einen ActionListener am Button, und der Button reagiert auf jeden Fall nur dann, wenn er den Fokus hat.
 
S

Schlaumi Schlumpf

Gast
Ok i hab gesehn i hab glaub mich falsch ausgedrückt mmh also dein Code klappt jetzt mit dem Button aber wollte eignetlcih was anderes damit machen ?? Wie geht das dann das man auf den gewünshten Button drückt un dieser in einer Textarea erscheint ? Weil bei diesem Code

final JButton b = new JButton("BlaBla");
b.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_1) b.doClick();
}
});

hab ich festgestellt das nur der Button reagiert das er gedrückt wird allerdings wird nicht der Buchstabe in ne Textarea geschrieben is mir echt peinlich sorry nochmal??? Wie nennt man das dann??
 

Leroy42

Top Contributor
Hallo Schlaumi Schlumpf

Der Beitrag des Vorposters, analysiert, meine Meinung nach, genau was du brauchst...
:cool:
 
S

Schlaumi Schlumpf

Gast
Also ob ihr all wissen seit?? Ich hab Keylistener halt noch nie behandelt und das in galileo ken i scho hilf mir aber net wirklich
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben