KeyListener Beispiel

Viewty-Fan

Mitglied
Hallo,
ich programiere einen Taschenrechner. DieTasten 1-9 sind mit Buttonlistenern geschrieben. Jetzt will ich, dass ich die Zahlen und Zeichen auch mit dem Nummernblock eingeben kann. Das wollte ich mit Keylistener realisieren, doch ich weiß nicht genau, wie ich es umsetzen soll.


Habt ihr da eine Lösung/Programmbeispiel?

Viewty-Fan
 
bis jetzt bin ich soweit... Wie bekomme ich es jetzt hin, dass er auf die Taste "0" reagiert?
Das ganze soll in dem Textfeld "Display" angezeigt werden.

Java:
	public class KeyListenerTest implements KeyListener {
		
	    
	    public KeyListenerTest() {
        	String oldString=Display.getText(); 
        	String newString= oldString+"0";
        	Display.setText(newString);  
	    	
	    }

Wie kann ich ihn danach adden? Ich verstehe dabei nicht was das this macht.

Java:
 Display.addKeyListener(this);
 
this ist eine Referenz auf das aktuelle Objekt in dem Du Dich zum Aufrufzeitpunkt befindest - und würde in dem Fall nur Sinn machen, wenn Display (Variablennamen sollten mit einem Kleinbuchstaben anfangen) das Interface KeyListener implementiert.

Hier mal ein Bsp. wie man an ein TextField einen anonymen KeyListener anhängen kann.
Java:
JTextField textField = new JTextField();
textField.addKeyListener(new KeyListener() {
	public void keyPressed(KeyEvent e) {
		System.out.println(e.getKeyChar() + " pressed");
	}
	public void keyReleased(KeyEvent e) {
		System.out.println(e.getKeyChar() + " released");
	}
	public void keyTyped(KeyEvent e) {
		System.out.println(e.getKeyChar() + " typed");
	}
});
Ein KeyListener reagiert nur, wenn die Komponente den Fokus hat, daher bin ich immer noch der Meinung, dass in Du eigentlich Key Bindings brauchst statt Listener. Dein Vorhaben, was ich aus Deinen Codefragmenten glaube zu schliessen, macht mit einem KeyListener an der Komponente in die die Werte eingetragen werden wenig Sinn.
 
Hallo zusammen,
ich habe ein Suchen-Button und ein Suchfeld
ich möchte in Suchfeld etwas schreiben und auf Eingabetaste drücke soll es funktionieren also ich möchte Suchen-Button mit KeyListener binden und habe ich folgende Code

[JAVA=42]
suchen_button = new JButton("Suchen")
.
.
.

suchen_button.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
buttonBerechneClicked();

}
public void keyReleased(KeyEvent e) {

}
public void keyTyped(KeyEvent e) {

}
});

public void buttonBerechneClicked(){
conn = getInstance();
ArrayList studenten = new ArrayList();
// Anfrage-Statement erzeugen.
Statement query;
try {
query = conn.createStatement();

String name =person_suchen.getText();
String sql ="SELECT * FROM student WHERE Vorname = '"+name + "' OR Nachname='"+name+"'";

ResultSet result= query.executeQuery(sql);
// if (result==null){ //TODO: gib aus wenn keinen Eintrag trifft
// ergebnis_feld.setText("diese Eintrag existiert in DB nicht...");
// }else{

ergebnis_feld.setText("");
while (result.next()) {
String first_name = result.getString("Vorname"); // Alternativ: result.getString(1);
String last_name = result.getString("Nachname"); // Alternativ: result.getString(2);
String name_result = " "+last_name + ", " + first_name+"\n";

// schreibInErgebnis(name);

// ergebnis_feld.append(name_result);
ergebnis_feld.setText(ergebnis_feld.getText()+"\n "+name_result);
}
// } //else
} catch (SQLException e) {
e.printStackTrace();
}

}

[/code]

wäre sehr nett wenn jemand mir sagen kann, was für ein Fehler ich hier mache
danke für Hilfe
 
Du willst also das wenn man im Textfeld auf Enter drückt was passiert oder beim Button?
Im ersten Fall musst du dem Textfeld den KeyListener zuweisen und musst überprüfen ob die gedrückte Taste die Entertaste ist, ansonsten wird die Methode bzw das was im KeyListener immoment steht immer ausgeführt bei jedem Tastendruck
 
ich schreibe im Suchfeld ein Name und drücke auf Enter-Taste also ich will nicht extra mit Maus auf die Suchen-Button gehen und klicken
aber reagiert nicht egal auf welche taste ich drücke.....

zum Beispiel mit diese zeilen code funktioniert es

[JAVA=42]
suchen_button.addActionListener(new ActionListener(){

public void actionPerformed (ActionEvent arg0){
buttonBerechneClicked();
}
});
[/code]
 
Zuletzt bearbeitet:
Java:
person_suchen.addActionListener(new ActionListener(){
            
            public void actionPerformed (ActionEvent arg0){
                buttonBerechneClicked();
            }
 });

?
dann einfach im Textfeld enter drücken
 
Hallo.. da Ronny ist es.

Ich habe jetzt auch mein Programm fertig geschrieen... hat etwas länger gedauert als gedacht, aber wenigstens gehts jetzt. Und nun wollte ich das Programm mit den Tasten auf der Tastatur stueren, damit man nicht immer die Maus in die Hand nehmen muss. Ich habe in dem Thread das:

Java:
    person_suchen.addActionListener(new ActionListener(){
               
                public void actionPerformed (ActionEvent arg0){
                    buttonBerechneClicked();
                }
     });

gefunde... aber ich werde nicht schlau draus. Ich habe zum Beispiel einen Button der OK heißt. den möchte ich gerne mit Enter "drücken", aber wo lege ich denn fest, dass das mit Enter passieren soll?

Da Ronny
 

Zurück
Oben