Java SWT KeyListener reagiert nicht

Schnuffix10

Cadet 2nd Year
Registriert
Okt. 2013
Beiträge
24
Hi!

ich hab mit Java SWT ein Button erstellt und er soll, wenn dieser mit Enter betätigt wird, einen Text zum Test ausgeben.

Mit jeder Taste funktioniert es soweit, außer bei Enter. Woran kann das liegen?
Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class haupt {

	public static void main(String[] args) {
		
		
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setText("Pacman");
		shell.setSize(500, 500);
		shell.setBackground(display.getSystemColor(SWT.COLOR_DARK_BLUE));
		shell.open();

		
		
		Button button = new Button(shell,SWT.NONE);
		button.setText("Drück mich");
		button.setBounds(50, 50, 150, 150);
		
		button.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e) {
			
				if(e.keyCode == SWT.CR|| e.keyCode == SWT.ESC) {
				System.out.println("yeah");
				}
			}
		});
		
		
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
					display.sleep();
				}
			}
		display.dispose();
		
		
	}

}


vielen dank :)
 
Hi,

Code:
if(e.keyCode == SWT.CR|| e.keyCode == SWT.ESC)

was wird denn für ein KeyCode bei "Enter" angezeigt? Ist es sicher SWT.CR?

Kommst du grundsätzlich in dein

Code:
public void keyPressed(KeyEvent e) {

Event überhaupt rein bei "Enter"? Falls ja, lass dir "e" doch mal ausgeben wenn du Enter drückst!

VG,
Mad
 
Hey :)

also als Keycode wird mir 0xd angezeigt beim Enter drücken.

In das Event kommt ich nicht per enter rein, aber per ESC, was ich ja als zweite bedingung drin hab.


allerdings hab ich das ganze jetzt mal noch in ein Text Event gesetzt und da klappt es per Enter.
Text text = new Text(shell, SWT.BORDER);
text.setBounds(50, 350, 250, 25);
text.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent event) {

if(event.keyCode == 0xd) { //alternativ SWT.CR
String string = text.getText();
System.out.println(string);}
}
});

Wieso aber nicht bei dem Button?
hmmm
 
Hi,

einen Button selber bestätigt man in der Regel auch nicht nochmal zusätzlich mit einem KeyEvent, sondern man legt das KeyEvent auf ein Feld, wie z.B. bei einem Formular. So kann ich im Feld "Enter" drücken und damit das Submit Event triggern.

Ob du einem Button ein "Enter" Event abringen kannst kann ich dir ehrlich gesagt gar nicht sagen. Schau dir mal dieses Beispiel an. Hast du auch "setDefaultButton" probiert wie in dem Beispiel?

Ansonsten bin ich leider überfragt.

VG,
Mad
 
Natürlich kann man mit SWT "Enter" auch bei Buttons abfragen. Es gilt allerdings die Eigenheiten der API zu beachten.

Ein KeyListener ist hier nicht geeignet. Man müsste einen TraverseListener nehmen. Wobei die Frage wäre, ob nicht ein SelectionListener ausreicht, um zum Ziel zu kommen.
 
Danke euch beiden sehr!
Habe es über den TraverseListener lösen können.

Danke ;)
 
Zurück
Oben