JTextField und keyevents

swing

#1

Hey Leute,

komme neben dem Studium tatsächlich nochmal zum programmieren…

Ich habe ein JTextField und will bei “Enter” nicht wie üblich in einem ActionListener reagieren, sondern in einem key listener des Parent panels. Irgendwie kommt dieses keyevent aber gar nicht oben an. wir das vom JTextField irgendwie verschluckt?

Schicke das Event momentan manuell hoch:

((JComponent) e.getSource()).getParent().dispatchEvent(e);

geht das irgendwie schöner?

grüße


#2

Spontan wüßte ich da nichts, aber es klingt nach einem XY-Problem: WAS genau soll denn bei “Enter” passieren, und warum MUSS das von einem KeyListener im Parent gemacht werden? Bei Enter fliegt ein ActionEvent (IIRC), und was auch immer da gemacht werden soll, kann gemacht werden - ich sehe keinen Grund, mit Events rumzujonglieren.


#3

Ein text wird eingeben, mit druck auf enter (oder in manchen fällen entf, das ist auch dann so ne sache) soll der text ausgewertet werden, es gibt ein visuelles feedback, währenddessen disable ich das textfield (damit man währenddessen nichts anderes eingeben kann und das optisch so “du hast grad nichts zu tippen” erscheint), und dann soll’s mit druck auf enter oder entf weitergehen.

Da dann sowieso alle 4 fälle außer “enter im nicht disableten textfield” im panel keylistener abgefragt werden muss, wollt ich den letzten auch dahin schieben und dort verwalten.


#4

Würde auch nichts umbiegen. Spendiere dem Eventhandling doch einfach eine eigene Klasse, die sowohl KeyListener wie ActionListener implementiert, dann hast du den Krams doch trotzdem zusammen behandelt.


#5

andere KeyEvents kommen sowohl im JTextField als auch im Parent an?
ist ja auch nicht gerade zu erwarten,
kleines Textprogramm wäre willkommen, aber klingt ja nicht als wäre viel möglich,

zwei Links zur Sache, wenn auch nur wenig originelle Suche ‘keyevent parent’,

der erste mit KeyBindings und WHEN_ANCESTOR_OF_FOCUSED_COMPONENT vielleicht noch erhöht interessant, wenn auch ganz anderes als KeyListener