Tastendrücke werden 2x ausgewertet

  • Themenstarter Gelöschtes Mitglied 9001
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 9001

Gast
Hallo,

meine GUI ist mit AWT aufgebaut.
Eine selbst erstellte Komponente reagiert auf die Leertaste.
Wenn sich nun darüber ein modaler Dialog öffnet, den ich aber nicht schließe, in dem ich auf einen Button mit der Maus klicke, sondern mit Tab den Focus auf den Button bewege und die Leertaste drücke, um ihn zu betätigen, schließt sich der Dialog und dann bekommt meine Komponente aber nochmal ein Tastenereignis mit der Leertaste und reagiert darauf. Das sollte natürlich nicht sein. Handelt es sich hier um ein AWT-Problem? Gibt es Workarounds?
Die Komponente ist mit enableEvents(AWTEvent.KEY_EVENT_MASK) auf das Hören von Tastendrücken eingestellt und in processKeyEvents kommen diese dann schließlich an.

Danke für alle Tipps!
 
B

Beni

Gast
Ist es vielleicht einmal Taste runterdrücken (Key-Pressed), und das andere mal Taste loslassen (Key-Released)?

Normalerweise verwendet man heutzutage einen KeyListener anstelle der processKeyEvents-Methode, der KeyListener macht schon eine Unterscheidung zwischen verschiedenen "Ausprägungen" der KeyEvents (ein KeyListener wird mit "addKeyListener" bei einer Component registriert).
 
G

Gelöschtes Mitglied 9001

Gast
Mit processKeyEvents kann man diese Unterscheidung auch machen, indem man einfach getID() abfragt. Nichtsdestotrotz: Leider bleibt auch bei Verwendung eines KeyListeners der Effekt:
Nach Beendigung des Dialogs mit der Leertaste wird die keyPressed-Methode aufgerufen und ihr eine Leertaste übergeben.
 
G

Gelöschtes Mitglied 9001

Gast
Der gleiche Effekt tritt übrigens auch beim Menü auf. Wenn meine Komponente auf die Taste B reagiert und im Menü ein ShortCut für Strg+B definiert ist, wird die Menüaktion ausgeführt UND meine Komponente reagiert. In diesem Fall kann ich freilich in der Komponente prüfen, ob Strg gedrückt ist. Aber es ist das gleiche Problem wie im Fall der Leertaste und dem modalen Dialog, denk ich.
 
G

Gelöschtes Mitglied 9001

Gast
Habe es probiert. Leider auch ohne Erfolg.
 
G

Gelöschtes Mitglied 9001

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

class Test extends Frame {

	class meinDialog extends Dialog implements ActionListener {
		meinDialog(Frame parent) {
			super(parent, "Testdialog", true);  // modalen Dialog erzeugen
			Button B = new Button("Ok");
			B.setActionCommand("ok");
			B.addActionListener(this);
			add(B);
			pack();
		}
		
		public void actionPerformed(ActionEvent e) {
			if (e.getActionCommand() == "ok") dispose();
		}
	}
	
	class meineKomponente extends Canvas implements KeyListener {
		meineKomponente() {
			addKeyListener(this);
		}
		
		public void keyPressed(KeyEvent e) {
			if (e.getKeyChar() == ' ') System.out.println("AUWEIA! Leertaste empfangen!");
			
			else if (e.getKeyChar() == 'd') {
				System.out.println("Hallo");
				meinDialog D = new meinDialog((Frame) getParent());  // modalen Dialog erzeugen
				D.setVisible(true);
			}
		}
		
		public void keyReleased(KeyEvent e) {}
		
		public void keyTyped(KeyEvent e) {}
		
		public boolean isFocusable() { return true;	}
	}
	
	Test() {
		super("Test");
		add(new meineKomponente());
		
	}
	
	public static void main (String [] args) {
		Test T = new Test();
		T.setVisible(true);
	}
}

Hier ein kurzes Demo. Nach dem Start d drücken, um den Dialog zu öffnen. Er enthält den Button. Mit der Leertaste wird der Button betätigt. Daraufhin schließt sich der Dialog. meineKomponente empfängt allerdings ebenfalls noch mal ein Leertastenereigenis.
 
G

Gelöschtes Mitglied 9001

Gast
Auf welchen Betriebssystem habt ihr getestet? Vielleicht ist es ein MacOS-Problem. Möglicherweise klappt die Zusammenarbeit von AWT und MacOS nicht so gut. Das repaint funktioniert in modalen Dialogen beispielsweise auch nicht, weshalb Radiobuttons nur mit Krämpfen möglich sind.
 

Azrahel

Bekanntes Mitglied
Hast du vllt ne defekte Tastatur? Ich kenn das von meiner alten, das nennt man dann Tasten prellen. KLingt jetzt doof, aber unmöglich wärs ja nicht.
 
G

Gelöschtes Mitglied 9001

Gast
:)
Sowohl bei der externen Genius-Windows-Tastatur als auch bei der MacBook-Tastatur tritt der Effekt auf. Tastenprellen müßte ja bei anderen Anwendungen auch bemerkbar sein.
 

thE_29

Top Contributor
Läuft das ganze unter MacOS?!

Und du testest auch dieses Bsp und nicht dein Programm selber?!
 
G

Gelöschtes Mitglied 9001

Gast
Sowohl bei diesem Beispiel als auch bei dem eigentlichen Programm werden bei mir (unter MacOS) die Tastendrücke 2x ausgewertet. Im Beispiel also die Leertaste.
 

thE_29

Top Contributor
Hat jemand ein MacOS und könnte das testen?!

Maybe ein Fehler (oder andere handhabung) unter MacOS!
 
G

Gelöschtes Mitglied 9001

Gast
Offenbar scheint AWT auf MacOS nicht einwandfrei zu funktionieren. Habe es unter Win und Linux getestet, wo es einwandfrei läuft. Ich bin nun doch auf Swing umgestiegen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
P Tastendrücke abfragen AWT, Swing, JavaFX & SWT 3
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
W Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
H JButtons werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
ProggersWorld JavaFX Icons im TreeView werden nicht angezeigt AWT, Swing, JavaFX & SWT 1
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
J e(fx)clipse funkioniert nicht / imports werden Rot gekennzeichnet AWT, Swing, JavaFX & SWT 1
ronbot77 JavaFX Rechtecke werden nicht neu gezeichnet AWT, Swing, JavaFX & SWT 8
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
MoxxiManagarm JavaFX Auch ich versuche mit JavaFX warm zu werden AWT, Swing, JavaFX & SWT 9
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
L Swing JPanels werden nicht angezeigt! AWT, Swing, JavaFX & SWT 7
ralfb1105 Swing SwingWorker - max 10 Threats werden gestartet !? AWT, Swing, JavaFX & SWT 5
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
A Swing Meine JButtons werden nicht angezeigt bitte helft mir AWT, Swing, JavaFX & SWT 2
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
SchmidiMC 2D-Grafik Grafiken werden nicht gezeichnet AWT, Swing, JavaFX & SWT 2
J Controler werden nicht inialisiert - Warum ? AWT, Swing, JavaFX & SWT 12
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
R JRE, NPAPI Java Plugins: Werden Plugins weiterhin bereit gestellt? AWT, Swing, JavaFX & SWT 5
I JAVA 8, JAVAFX und Eclipse – muss Eclipse extra eingerichtet werden? AWT, Swing, JavaFX & SWT 9
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
DerMauri JavaFX Raspberry Pi meldet "Hauptklasse konnte nicht gefunden oder geladen werden" AWT, Swing, JavaFX & SWT 10
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
J Swing Strings werden nicht in Textfeld geschrieben AWT, Swing, JavaFX & SWT 8
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
X JavaFX Tooltips für XYChart-Knoten werden nicht angezeigt! AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
J Meine ProgBar und ProgIndi werden nicht aktualisiert AWT, Swing, JavaFX & SWT 28
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
C AWT Textfelder werden nicht automatisch angezeigt AWT, Swing, JavaFX & SWT 2
D Buttons werden nebeneinander angeordnet AWT, Swing, JavaFX & SWT 9
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
9 Swing Registrierte Knöpfe mit Bildern werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
L Tooltips werden nicht mehr angezeigt AWT, Swing, JavaFX & SWT 5
R Swing Buttons werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
K JTabs werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
S Swing Tooltips werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
G JavaFX TableView - Änderungen werden nicht übernommen. AWT, Swing, JavaFX & SWT 3
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
A Swing Parameter werden bei Funktionsaufruf nicht ausgegeben AWT, Swing, JavaFX & SWT 2
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
J Abbrechen muss immer einmal mehr gedrückt werden AWT, Swing, JavaFX & SWT 3
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
S Swing Inhalte von Scroll-Panes werden nicht gezeichnet AWT, Swing, JavaFX & SWT 9
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Mausbewegungen werden gepuffert AWT, Swing, JavaFX & SWT 2
J CMD: Hauptklasse konnte nicht gefunden werden AWT, Swing, JavaFX & SWT 4
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
maestr0 SWT ContainerSelectionDialog kann nicht importiert werden AWT, Swing, JavaFX & SWT 2
X JTable Selektierte Reihe kann nicht gelöscht werden AWT, Swing, JavaFX & SWT 2
T iText - JTable to PDF - titel werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
El_Lobo Swing Swing TextArea und JTextField werden nicht aktualisiert AWT, Swing, JavaFX & SWT 2
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
N Meine JLabels werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
alex_fairytail LayoutManager NullLayout überlappende Labels werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
aze Werden Applets browserunabhängig angezeigt ? AWT, Swing, JavaFX & SWT 3
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
M Swing CheckBoxen werden nicht in jTable angezeigt AWT, Swing, JavaFX & SWT 3
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
Weltall 7 Swing JPanels werden doppelt gezeichnet AWT, Swing, JavaFX & SWT 6
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
R Panel dupliziert sich und Textboxes werden nicht angezeigt [Anfänger] AWT, Swing, JavaFX & SWT 6
J Swing JPanels werden ständig gezeichnet AWT, Swing, JavaFX & SWT 11
N JTable row darf dicht selektiert werden AWT, Swing, JavaFX & SWT 2
M Menübar soll bestehen bleiben, wenn andere Masken geöffnet werden AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben