Warum wird der KeyListener nicht angesprochen?

Status
Nicht offen für weitere Antworten.

der Pate

Mitglied
Frage: siehe Überschrift

Code:
public class Haupt extends java.awt.Panel implements Runnable, KeyListener, ActionListener{
    
    public Haupt() {
       
        addKeyListener(this);
        
    }
    
   
    
    
    
    public static void main(String[] args){
        java.awt.Frame frame = new java.awt.Frame("xyz");
        frame.addWindowListener(new java.awt.event.WindowAdapter(){
           public void windowClosing(java.awt.event.WindowEvent we){
               System.exit(0);
           }
        });
        frame.add("Center", new Haupt());
        frame.setSize(410,435);
        frame.addKeyListener(new Haupt());
        frame.show();
        
    }
    
    
    public void keyPressed(KeyEvent e) {
        int welcher = e.getKeyCode();
        if(welcher>1003 && welcher<1008){
            switch(welcher){
                case 1004: wohin = 'h'; break;
                case 1005: wohin = 'u'; break;
                case 1006: wohin = 'l'; break;
                case 1007: wohin = 'r'; break;
                default: break;
            }
        }
    }
    
    public void keyTyped(KeyEvent e){
        /*int welcher = e.getKeyCode();
        if(welcher>1003 && welcher<1008){
            switch(welcher){
                case 1004: wohin = 'h'; break;
                case 1005: wohin = 'u'; break;
                case 1006: wohin = 'l'; break;
                case 1007: wohin = 'r'; break;
                default: break;
            }
        }*/
    }
    public void keyReleased(KeyEvent e){}
 }

Ich hab echt kein Plan warum das nicht geht. Bitte helft mir.
 
B

Beni

Gast
Ich geh mal davon aus, deine komischen if's funktionieren richtig (es gibt sonst auch "KeyEvent#getKeyChar oder so..." :wink: )

Versuch mal "Panel#setFocusable( true );" und klick einmal mit der Maus auf das Panel.
 

der Pate

Mitglied
geht leider trotzdem nicht.
und das mit dem zahlencode mach ich nur, weil das meines erachtens die Pfeiltasten sind.
außerdem hab ich noch mal nach den if abfragen nen string, wo die keynummer reingeschrieben wird. und in dem steht auch nix drin ???:L
 
K

Klausi

Gast
Ich kann deinen Fehler nicht finden. Ich glaube aber, dass das zum Teil auch an deiner unübersichtlichen Schreibweise liegt. Da ist zuviel ineinander verschachtelt. Deine KeyPressed Funktion wird auf jeden Fall nie aufgerufen, wenn man mal davon absieht, dass deine keyCodes falsch sind.

Ich habe mal versucht einen einfacheren Code zu schreiben mit dem geht es jetzt.

Warum verwendest du eigentlich keine Adapter-Klassen? Mit diesen brauchst du nicht alle Methoden abzuleiten, die du überhaupt nicht brauchst?

Code:
import java.awt.event.*;
import java.awt.*;

public class Haupt{     
    
    public static void main(String[] args){ 
        new MyFrame();        
    } 
  
}

class MyFrame extends Frame {
	
	char wohin;
	
	MyFrame() {
		super("xyz");
		addWindowListener(new MyWindowListener());
		setSize(410,435);
		addKeyListener(new MyKeyListener());
		setVisible(true);
	}
	
	class MyWindowListener extends WindowAdapter {
		
		public void windowClosing() {
			System.exit(0);
		}
	}
	
	class MyKeyListener extends KeyAdapter {
    	
    	public void keyPressed(KeyEvent e) { 
	        int welcher = e.getKeyCode(); 
	        switch(welcher){ 
    	    	case KeyEvent.VK_LEFT: wohin = 'h'; break; 
        	    case KeyEvent.VK_RIGHT: wohin = 'u'; break; 
            	case KeyEvent.VK_UP: wohin = 'l'; break; 
                case KeyEvent.VK_DOWN: wohin = 'r'; break; 
	            default: break; 
    		} 
    		System.out.println(wohin);
    	}
    }
}
 
N

Niki

Gast
normalerweise solltest du das ganze nicht mit den keyevents machen sondern über die Input bzw Action-Map:

der code muss ungefähr so ausschaun, hab ihn nur im kopf, ohne funktionierendem beispiel:

Code:
    InputMap im = <deinPanel>.getInputMap(JComponent.WHEN_IN_FOCUS....);
    ActionMap am = <deinPanel>.getActionMap();
    im.put(KeyStroke.getKeyStroke(......), "<dein identifier>");
    am.put("dein identifier>", new AbstractAction(){
        public void actionPerformed(){
            tu irgendwas.....
        }
    });

probiers mal aus.... bei mir hat das mit den keyevents nur unter 1.3 funktioniert, unter 1.4 nicht mehr.... habens wohl geändert, steht aber glaub ich auch in der doku, dass man das jetzt über die maps machen soll....


happy coding
 
B

bygones

Gast
Niki hat gesagt.:
probiers mal aus.... bei mir hat das mit den keyevents nur unter 1.3 funktioniert, unter 1.4 nicht mehr.... habens wohl geändert, steht aber glaub ich auch in der doku, dass man das jetzt über die maps machen soll....
Kann leider nix davon bestätigen - bei mir laufen alle Keyevents auch unter 1.4 !
In der Doku konnte ich leider auch nichts finden dass KeyEvents deprecated sind ?!
Hast du links oder ähnliches dazu ??
 
N

Niki

Gast
nun ja, ich hab das problem nur, dass sie nicht anspringen, wenn eine textkomponente z. bsp jtextfield den focus hat, dann dürfe das event verschluckt werden, und der panel bekommts nicht mit

funktioniet das bei dir immer, oder hast du in deinen panels, containern, keine textkomponenten???
 
N

Niki

Gast
zu Key-Bindings:

schau dir die technical articles and tips zu Keyboard Bindings in Swing an...

vielleicht findest du dort interessantes material
 
N

Niki

Gast
du kommst über die JComponent Documentation auf die seite unter dem link Keyboard Bindings in Swing
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
L KeyListener wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 19
J KeyListener wird ignoriert AWT, Swing, JavaFX & SWT 18
H JavaFX Background-Bild wird in .exe nicht angezeigt AWT, Swing, JavaFX & SWT 6
B im JFrame gesetzte Hintergrundfarbe wird beim Ausführen nicht gezeigt AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
G Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
G JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
K JavaFX Stage wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
D iText PDF wird nach Neustart nicht importiert AWT, Swing, JavaFX & SWT 0
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
X JavaFX AreaChart area höhe wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 2
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
S Swing Konstruktor wird nicht rechtzeitig fertig? AWT, Swing, JavaFX & SWT 4
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben