Hallo Leute,
Vorweg:
ich habe die buttons 0-9, für diese habe ich bereits eine hilfsklasse(für action performed event) erstellt, welche einwandfrei funktioniert.
ich habe diesen listener wie folgt umgesetzt:
btn1.setActionCommand("1"); // dem button diesen command zugewiesen
und anschließend in der hilfsklasse diesen switch erstellt:
switch(e.getActionCommand()){
case "1":
lbleingabe.setText( lbleingabe.getText() + "1"); //aktion für button mit dem command "1"
break;
....
danach musste ich nur noch den listener dem button zuweisen in etwa so:
btn1.addActionListener(new ActionListenerTasten()); //name der hilfsklasse in klammer
-> das button anklicken funktioniert also einwandfrei
Erweiterung und Problem:
jetzt möchte ich zu den Buttons zusätzlich die Tastatur hinzufügen über eine weitere hilfsklasse(KeyListener)
hier habe ich es nicht hinbekommen die selbe lösung wie oben zu benutzen.
ich habe es folgendermaßen versucht:
und im button den keylistener hinzugefügt:
btn1.addKeyListener(new KeyListenerTasten());
-> es passiert nichts wenn ich eine taste drücke, ich kann mir nicht erklären weshalb. Eigentlich sollte es so doch funktionieren? Bitte helft mir den Fehler zu finden.
-> des weiteren versuche ich die listener mit einer if clause zu verbinden und zwar folgende:
die die länge des eingabelbl begrenzt. ich habe folgendes schon versucht, nichts funktioniert:
1. in der action listener hilfsklasse die if clause einbinden. dabei habe ich den switch in die else anweisung gesetzt.
2. die begrenzung als methode und dort die listener methode im elsezweig aufrufen.
3. das einzige was geht ist die ifclause immer für jeden button einzeln in einen action listener pro button einzufügen.
P.S. gibt es in java auch noch eine möglichkeit wie ich den code für das reinschreiben der zahlen von tastatur und button anklicken verkürzen kann?
in c# hatte ich mal eine methode geschrieben die erkennen konnte, welcher button temporär gedrückt wird und hat dessen content ins "label" geschrieben. so konnte ich mir die arbeit sparen für jeden button den befehl und scheibe zahl x zu schreiben. in Java bekomm ich das aber i-wie nicht hin.
Liebe Grüße
Vivyel
Vorweg:
ich habe die buttons 0-9, für diese habe ich bereits eine hilfsklasse(für action performed event) erstellt, welche einwandfrei funktioniert.
ich habe diesen listener wie folgt umgesetzt:
btn1.setActionCommand("1"); // dem button diesen command zugewiesen
und anschließend in der hilfsklasse diesen switch erstellt:
switch(e.getActionCommand()){
case "1":
lbleingabe.setText( lbleingabe.getText() + "1"); //aktion für button mit dem command "1"
break;
....
danach musste ich nur noch den listener dem button zuweisen in etwa so:
btn1.addActionListener(new ActionListenerTasten()); //name der hilfsklasse in klammer
-> das button anklicken funktioniert also einwandfrei
Erweiterung und Problem:
jetzt möchte ich zu den Buttons zusätzlich die Tastatur hinzufügen über eine weitere hilfsklasse(KeyListener)
hier habe ich es nicht hinbekommen die selbe lösung wie oben zu benutzen.
ich habe es folgendermaßen versucht:
Java:
public class KeyListenerTasten implements KeyListener {
static JLabel lbleingabe;
@Override
public void keyPressed(KeyEvent e) {
lbleingabe=matheSpielfenster.lbleingabe;
int tasten = e.getKeyCode();
if (tasten ==KeyEvent.VK_1 || tasten == KeyEvent.VK_NUMPAD1){
lbleingabe.setText( lbleingabe.getText() + "1");
// weitere buttons
}
}
und im button den keylistener hinzugefügt:
btn1.addKeyListener(new KeyListenerTasten());
-> es passiert nichts wenn ich eine taste drücke, ich kann mir nicht erklären weshalb. Eigentlich sollte es so doch funktionieren? Bitte helft mir den Fehler zu finden.
-> des weiteren versuche ich die listener mit einer if clause zu verbinden und zwar folgende:
Java:
private void längebegrenzen(){
//eingabelänge begrenzen
int laenge = lbleingabe.getText().length();
if (laenge >= 4) {
//tu nix
}
else {
//text aus button einfügen
//btn1.addActionListener(new ActionListenerTasten()); geht nicht
lbleingabe.revalidate();
}
}
die die länge des eingabelbl begrenzt. ich habe folgendes schon versucht, nichts funktioniert:
1. in der action listener hilfsklasse die if clause einbinden. dabei habe ich den switch in die else anweisung gesetzt.
2. die begrenzung als methode und dort die listener methode im elsezweig aufrufen.
3. das einzige was geht ist die ifclause immer für jeden button einzeln in einen action listener pro button einzufügen.
P.S. gibt es in java auch noch eine möglichkeit wie ich den code für das reinschreiben der zahlen von tastatur und button anklicken verkürzen kann?
in c# hatte ich mal eine methode geschrieben die erkennen konnte, welcher button temporär gedrückt wird und hat dessen content ins "label" geschrieben. so konnte ich mir die arbeit sparen für jeden button den befehl und scheibe zahl x zu schreiben. in Java bekomm ich das aber i-wie nicht hin.
Liebe Grüße
Vivyel
Zuletzt bearbeitet: