Event Handling

flosparrow

Mitglied
Hey,
ich bin gerade dabei ein kleines Programm zuschreiben, was auf zwei events, in dem fall keyevents gleichzeitig reagieren soll. Leider schaff ich es nur, das ein event nach dem anderem abgearbeitet wird. Auch wenn ich den folgenden methodenaufruf in einem neuem Thread starte.
Praktisch sieht das ganze dann so aus:
Drückst man auf eine Taste auf die reagiert werden soll funktioniert das ganze. Drückt man jezt zusätzlich noch eine zweite, wird nur noch das event der zweiten taste ausgeführt.
Kann mir da jemand helfen, wie ich das geschickt implementieren könnte?
 

flosparrow

Mitglied
hier noch kurz ein Quellcode ausschnitt, damit ihr seht, nach welchem prinziep ich das bisher implementiert hab:

Java:
public class Test implements KeyListener{
    public void keyPressed(KeyEvent e) {
        figur f = new figur();
        int ID = e.getKeyCode();
        try{
            figur.do();
            Thread t0 = new Thread(f);
            t0.start();
        }catch(IllegalThreadStateException ex{}
    }
}

public class figur implements Runnable{
    @Override
    public void run() {
        bewege();
    }
}
 

Luk10

Top Contributor
Evt. den ersten Thread von Zeit zu Zeit schlafen legen, sodass auch andere (dein zweiter) Thread arbeiten können. Wobei die Methoden-Aufrufe ja schon sehr Aufwendig sein müssen um merkbar den zweiten Thread warten zu lassen.

-Luk10-
 

Antoras

Top Contributor
Gleichzeitig mehrere KeyEvents empfangen geht hardwarebedingt nicht. Manche Tasten auf der Tastatur werden vom gleichen Bus abgefragt, weshalb die Signale nicht gleichzeitig gesendet werden können.

Du wirst nicht drumherum kommen, als die Events zu speichern: Sobald eine Taste gedrückt ist, diese einer Liste hinzufügen - wenn sie wieder losgelassen wird muss sie dann wieder daraus entfernt werden.
 

tagedieb

Top Contributor
Drückt man jezt zusätzlich noch eine zweite, wird nur noch das event der zweiten taste ausgeführt.

Welche 2 Tasten drueckst du den? Die Action-, Modifierkeys werden eventuell mit andern keys zusammengelegt und als 1 Event. Aus deiner Beschreibung ist nicht ersichtlich ob der Event nicht ausgeloest oder es sich um ein Multithreading problem handelt.

Zur Info:
Alle AWT/Swing Events werden im EventDispatcherThread (The Event Dispatch Thread (The Java™ Tutorials > Creating a GUI With JFC/Swing > Concurrency in Swing)) sequenziel ausgefuehrt. Somit werden die KeyEvents niemals parallel verarbeitet. Du kannst aber den Code in einen Thread auslagern und starten, ab diesem Zeitpunkt laeuft die Verarbeitung wieder parallel. Es ist aber zu beachten, das saemptliche Veraenderung am AWT/Swing Komponenten, bzw die paint()-Methode wieder im EDT ausgefuehrt werden muss (siehe SwingWorker)
 

flosparrow

Mitglied
@luk10: nein. Der Aufwand des ersten Threads@ist nicht das problem. Bzw. ich glaube es nicht. Letztendlich soll sich entwas bewegen, wenn man auf eine der Pfeiltasten drückt. Bis dato kein Problem. Auch ist es möglich, das sich etwas zweites bewegt, wenn man die "W"-Tste drückt. Drückt man allerdings erst die Peil-Taste und hält diese gedrückt, bewegt sich das erste Objekt regelmäßig. Drücktman jetzt die W-Taste zusätzlich wird nur noch die bewegung des zweiten objekts wargenommen.

@Antoras: Danke. Echt gute Idee. Du meinst wahrscheinlich, dass man diese Liste dann immer wieder durchläuft und für jedes Event drin einen Thread erzeugt. Find ich echt gut. Ich werde es mal ausprobieren.

@tagedieb: So wie's aussieht handelt es sich um ein Problem mit dem Event Handling so wie Antoras geschrieben hat. Weil der zweite Thread ja auf jeden fall ausgeführt wird. Nur der erste dann nichtmehr.
Vielleicht liegt es aber auch an meiner Thread geschichte. Danke auch für deinen Tipp, aber soviel ich das verstanden habe, habe ich das ja schon gemacht.

Ganz generell bleibt für mich die Frage, wie man das normalerweise regelt. Es gibt ja doch relativ viele Programme, die "gleichzeitig" auf den Anschlag zweier oder noch mehr Tasten reagieren können.
 

bERt0r

Top Contributor
Du hast doch sicher eine Game loop. Mach dir 4 boolean Variablen rauf,runter,links,rechts und frag die in der loop ab. Ist eine z.B rauf true, bewegst du dein Männchen nach oben usw.
Im keylistener setzt du einfach die jeweilige Variable auf true bei pressed und false bei released.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
D Event Handling in Komplexen Anwendungen AWT, Swing, JavaFX & SWT 9
N Java Swing Event Handling AWT, Swing, JavaFX & SWT 7
R pint methode und event handling AWT, Swing, JavaFX & SWT 3
D Trennung des Event-Handling von der GUI AWT, Swing, JavaFX & SWT 4
L Event-handling, MouseListener AWT, Swing, JavaFX & SWT 5
K Event-Handling: Was steckt dahinter? AWT, Swing, JavaFX & SWT 11
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
W JavaFX Etwas Tabellenartiges + Cell-Content-Changed-Event (o.ä.) AWT, Swing, JavaFX & SWT 30
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
B Swing Windowbuilder Rückgabewert im Event AWT, Swing, JavaFX & SWT 3
Z Befehl Action Event Verlassen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
Sugan Swipe Event? AWT, Swing, JavaFX & SWT 8
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
H Event Handling JavaFx - auf Event warten AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
M Swing OnLoad-Event o. Ä. AWT, Swing, JavaFX & SWT 3
D Event Handling "Plötzlich" kein mouseMoved-Event AWT, Swing, JavaFX & SWT 2
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
J Swing JMenuItem-Event?? AWT, Swing, JavaFX & SWT 3
J Swing JTable-Event für einen Select?? AWT, Swing, JavaFX & SWT 3
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
J Button Event nur einmal ausführen AWT, Swing, JavaFX & SWT 3
S SWT Shell durch Event in der Größe verändern AWT, Swing, JavaFX & SWT 7
J Speichern, Event, Hintergrund getAppletContext AWT, Swing, JavaFX & SWT 2
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
T Anzahl Event Listeners AWT, Swing, JavaFX & SWT 4
A Swing JButton int im Event AWT, Swing, JavaFX & SWT 9
G Swing Onkeyup Event AWT, Swing, JavaFX & SWT 3
P Action Event abfangen etwas anders? AWT, Swing, JavaFX & SWT 2
3 Swing NullPointerException in AW Event-0? AWT, Swing, JavaFX & SWT 5
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
P Swing Event das ausgelöst wird, sobald Änderung der Größe Abgeschlossen ist AWT, Swing, JavaFX & SWT 4
A Shift-Tab-Event auslösen AWT, Swing, JavaFX & SWT 5
T Event Dispatch Thread und noch ein Thread AWT, Swing, JavaFX & SWT 7
W Swing Event bei Schließen des Fensters AWT, Swing, JavaFX & SWT 6
A Probleme mit dem KeyReleased-event AWT, Swing, JavaFX & SWT 3
J Doppelklick Event AWT, Swing, JavaFX & SWT 32
jueki Event bei Änderung der Spaltenbreite in einem JTable AWT, Swing, JavaFX & SWT 15
D jtabbedpane Event VOR tab-Wechsel AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Event Problem AWT, Swing, JavaFX & SWT 5
M JTree => Event Dispatching Error AWT, Swing, JavaFX & SWT 2
D Event in Fenster ausgeben + Observer + kein Plan AWT, Swing, JavaFX & SWT 2
H warum kann ich das focus event nicht abfangen ? AWT, Swing, JavaFX & SWT 5
X Den Wert von JSpinner setzen ohne Event AWT, Swing, JavaFX & SWT 3
H KeyUp-Event/Ereignis AWT, Swing, JavaFX & SWT 6
C Event Frage AWT, Swing, JavaFX & SWT 7
M Swing WindowListener -> Event abbrechen? AWT, Swing, JavaFX & SWT 2
K JToggleButton deaktivieren (komplettes event nehmen) AWT, Swing, JavaFX & SWT 2
R JTextField - Event bei jedem Buchstaben AWT, Swing, JavaFX & SWT 2
R WindowClosing Event - Schließen rückgängig machen? AWT, Swing, JavaFX & SWT 2
M Actionlistener ohne Event -.-?! AWT, Swing, JavaFX & SWT 2
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
D PropertyChangeListener Event auswertung AWT, Swing, JavaFX & SWT 7
O FlowLayout Button Event zuweisen? AWT, Swing, JavaFX & SWT 7
J remove() components bei event von JComboBox AWT, Swing, JavaFX & SWT 2
I event AWT, Swing, JavaFX & SWT 6
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
X Checkboxen erstellt mit MouseClicked event AWT, Swing, JavaFX & SWT 10
Dragonfire Swing One componentResized Event AWT, Swing, JavaFX & SWT 14
data89 Was mache ich mit "Dispatched Event Thread"/Substance falsch? AWT, Swing, JavaFX & SWT 4
Kr0e Event simulieren AWT, Swing, JavaFX & SWT 5
S Tastatur Event auserhalb des fokuses aufnehmen AWT, Swing, JavaFX & SWT 4
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M Swing Event mit Button AWT, Swing, JavaFX & SWT 7
B Wie kann ich ein event wieder beseitigen AWT, Swing, JavaFX & SWT 2
R Checkboxen - Event mit Controller abfangen AWT, Swing, JavaFX & SWT 7
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
Dragonfire JTree, Selection via event AWT, Swing, JavaFX & SWT 7
K JButton auf JPanel in JTable (Darstellungs-/Event-Probleme) AWT, Swing, JavaFX & SWT 16
B JInternalFrame resize event AWT, Swing, JavaFX & SWT 2
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
D Event beim Laden eines JPanels? AWT, Swing, JavaFX & SWT 3
O Action Event auslösen bei unbekanntem JTextField AWT, Swing, JavaFX & SWT 3
R Registrieren um Event abzufangen AWT, Swing, JavaFX & SWT 3
N solange Maustaste gedrückt Event AWT, Swing, JavaFX & SWT 15
Daniel_L Nachrichten/Event aus nicht-modalen Dialogen abfragen? AWT, Swing, JavaFX & SWT 4
G Event an einer JComboBox registrieren AWT, Swing, JavaFX & SWT 8
S Welches Event beim ändern einer Zelle in einer JTable AWT, Swing, JavaFX & SWT 4
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A Event von Login zu Main klasse AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben