KeyEvents kommen nicht an

membersound

Bekanntes Mitglied
Hallo,

ich erstelle mir ein JOptionPane mit ja/nein. Die KeyListener Methode wird allerdings nie aufgerufen...
Warum werden meine KeyEvents nicht abgefangen?

Java:
deleteDialog = new javax.swing.JOptionPane();

deleteDialog.setMessage("Do you really want to delete this?");

deleteDialog.setOptionType(JOptionPane.YES_NO_OPTION);

deleteDialog.setOptions(new Object[]{"OK", "Cancel"});

deleteDialog.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyPressed(java.awt.event.KeyEvent evt) {
        deleteDialogKeyPressed(evt);
    }
});



    private void deleteDialogKeyPressed(java.awt.event.KeyEvent evt) {                                        
        System.out.println("any key pressed");
    }
 

Atze

Top Contributor
Java:
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;

public class TestFrame extends JFrame{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -8669024322718970597L;

	public TestFrame(){
		setSize(400,400);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		
		addKeyListener(new KeyAdapter() {
		    public void keyPressed(KeyEvent evt) {
		        System.out.println("Juhu");
		    }
		});
	}
	
	public static void main(String[] args) {
		new TestFrame();
	}
}

sollte so gehen
 

membersound

Bekanntes Mitglied
Naja ich möchte in dem erzeugen Dialog einfach auf Keyevents reagieren können. Enter sollen Dialog mit OK schließen, und ein anderer Button mit cancel. Dafür muss ich ja erstmal erreichen, dass er überhaupt auf KeyEvents in dem Dialog reagiert. Was er atm nicht tut.
 

membersound

Bekanntes Mitglied
Ich hatte jetzt den OptionPane einfach so ohne Frame erzeugt. Und lasse ihn mir an verschiedenen Stellen erzeugen zB mit
Java:
deleteDialog.createDialog("Confirm delete").setVisible(true);

Muss er in einen eigenen Frame rein, damit das funktioniert?
 
Zuletzt bearbeitet:

andy82

Mitglied
Muss er in einen eigenen Frame rein, damit das funktioniert?

Teste es selbst, wie es funktioniert. Im Grunde Du benutzt die Methode createDialog(String title) anstatt
createDialog(JDialog parentComponent, String title) - hier parentComponent=null. Für Test-Zwecken ist OK, in einem Projekt nicht. Ein Dialog soll immer (abgesehen von Haupt-Dialog wie JFrame Main) ein ParentComponent haben, damit es kurzfristig modal erscheint und gelöscht wird. Du will doch nicht dass ein Dialog irgendwo in einem Ebene steckt, oder?
 

membersound

Bekanntes Mitglied
Was ich nicht verstehe: Wenn ich mir einen JOptionPane mit .setOptionType(JOptionPane.YES_NO_OPTION); mache, dann ist meine Value davon entweder 0 oder 1, und wenn ich ENTER drücke wird immer der "Ja" Button, also 0, gedrückt. Also das ist die Standard-Behaviour. Selbst, wenn ich mit TAB auf den "nein" Button weiter gesprungen bin. Das macht doch gar keinen Sinn, dass ein YES_NO_OPTION bei Enter immer YES nimmt?

Wie kann ich auf dieses Verhalten denn nun Einfluss nehmen?

Wenn ich setOptions(new Object[]{"OK", "Cancel"}); mache, dann bekomme ich als Value natürlich OK/Cancel. Aber Enter wird nicht mehr entgegen genommen. Warum?
 

membersound

Bekanntes Mitglied
Ja kann schon sein. Ich frag mich dann nur, warum ich die beiden Optionen nicht einfach OK/Cancel benennen und mit den gleiche Key-Commands ansteuern kann.
 

andy82

Mitglied
... Ich frag mich dann nur, warum ich die beiden Optionen nicht einfach OK/Cancel benennen und mit den gleiche Key-Commands ansteuern kann.

JOptionPane ist eigentlich ein Dialog, man bau dort die Möglichkeit, nicht nur ein, nicht nur 2, sondern mehr Button-Optionen. Daher return value dieser Button ist int.
z.B. im folgendem Beispiel, wenn ich Parameter optionTyp die Werte JOptionPane.YES_NO_CANCEL_OPTION (=1!), dann hat Dialog 3 Button.
/*
public static final int YES_NO_OPTION = 0;
/** Type used for <code>showConfirmDialog</code>. */
public static final int YES_NO_CANCEL_OPTION = 1;
/** Type used for <code>showConfirmDialog</code>. */
public static final int OK_CANCEL_OPTION = 2;
*/
:lol:
Außerdem JOptionPane ist bereits Deine Anwendung, ohne irgendeine Bastelein anzuwenden.
Benuze einfach die Methode showConfirmDialog(....), oder showInputDialog(....), oder showInternalConfirmDialog( ....), oder showMessageDialog(...) oder showOptionDialog(...) für verschiedene Optionen-Dialog und bewertet die integer-return-values.
:lol:
Test-Code:
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Test extends JFrame implements ActionListener{
	private static final long serialVersionUID = 8115606456198930815L;
	public Test() throws HeadlessException {
		setTitle("Test_Frame");
		setMinimumSize(new Dimension(300, 200));
		setPreferredSize(new Dimension(600, 400));
		buttonTest = new JButton("Hier drücken um JOptionPane zu testen");
		getContentPane().add(buttonTest, BorderLayout.NORTH);
		
		textField = new JTextField();
		getContentPane().add(textField, BorderLayout.SOUTH);
		textField.setColumns(10);
		buttonTest.addActionListener(this);
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				Test prg = new Test();
				prg.setVisible(true);
			}
		});
	}
	JButton buttonTest;
	private JTextField textField;
	private void startJOptionPane(){
//hier wartet man auf Button-Optionen:
		int choose=JOptionPane.showConfirmDialog(
			this, "Habt Ihr mich?", "Wähle Ja oder nein", JOptionPane.YES_NO_CANCEL_OPTION);
		if(choose==JOptionPane.OK_OPTION)
			textField.setText("Wähle OK");
		else if(choose==JOptionPane.NO_OPTION)
			textField.setText("Wähle NO");
		else
			textField.setText("Wähle Cancel");
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==buttonTest)
			startJOptionPane();
	}
}
 
Zuletzt bearbeitet:

membersound

Bekanntes Mitglied
Ja, klingt alles gut und logisch.

Aber ich möchte ja die Buttons selbst labeln!
Bzw kann man alternativ diese YES_NO_CANCEL_OPTIONen auf Englisch darstellen lassen?
Mein Tool ist halt rein EN, und wenn dann plötzlich ein Ja Nein Vielleicht Dialog kommt ist das nicht so prickelnd :oops:
 

andy82

Mitglied
...
Bzw kann man alternativ diese YES_NO_CANCEL_OPTIONen auf Englisch darstellen lassen?
Mein Tool ist halt rein EN, und wenn dann plötzlich ein Ja Nein Vielleicht Dialog kommt ist das nicht so prickelnd :oops:

Dein Programm läuft wahrscheinlich mit Locale.de. Bei meinem Test habe ich die Button auf Englisch gesehen, nicht Deutsch. Wenn es sein muß, setzt Locale temporär auf Locale.en beim Anzeigen von Dialog
 

bERt0r

Top Contributor
Das schöne an java ist ja gerade dass es sich die default locale automatisch sucht. Wenn du also auf einem englischen Rechner dein Programm startest, ruft ein sauber programmiertes JOptionPane eine Yes No Cancel Option auf Englisch auf, nicht auf Deutsch.
 

membersound

Bekanntes Mitglied
Und was ist, wenn ich mein Programm mit verschiedene Sprachen ausrüsten will, und der User auf einem englischen Rechner zB deutsche Oberfläche auswählt? Dann bekäme er diese Dialoge ja trotzdem mit Yes, No, Cancel angezeigt.
 

andy82

Mitglied
Und was ist, wenn ich mein Programm mit verschiedene Sprachen ausrüsten will, und der User auf einem englischen Rechner zB deutsche Oberfläche auswählt? Dann bekäme er diese Dialoge ja trotzdem mit Yes, No, Cancel angezeigt.

Du gibt Deine Vermutung ab, ohne zu kontrollieren. Die zeigen immer entsprechende Sprache zu gewählten Locale, was Du temporär verändern kann!
:rtfm:
Wenn Du die vorhandene nicht benutzen will, dann versuche die Source von JOptionPane nachzuforschen und gegenbenfalls manche Methoden in UI überschreiben.
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Und was ist, wenn ich mein Programm mit verschiedene Sprachen ausrüsten will, und der User auf einem englischen Rechner zB deutsche Oberfläche auswählt? Dann bekäme er diese Dialoge ja trotzdem mit Yes, No, Cancel angezeigt.

Nein, dann würdest du nämlich manuell die verwendete Locale definieren und hättest wieder kein Problem.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F KeyEvents und MenuBar Java Basics - Anfänger-Themen 1
M KeyEvents in Process Java Basics - Anfänger-Themen 3
P Consolenapp KeyEvents Java Basics - Anfänger-Themen 3
M KeyEvents in anonymen AbstractActions? Java Basics - Anfänger-Themen 2
Bernasconi Sämtliche KeyEvents erhalten Java Basics - Anfänger-Themen 2
N Keyevents mit Buchstaben Java Basics - Anfänger-Themen 5
J Programmkontrolle durch KeyEvents Java Basics - Anfänger-Themen 4
D KeyEvents - ButtonListener aufrufen Java Basics - Anfänger-Themen 3
S Verarbeitung 2er KeyEvents gleichzeitig Java Basics - Anfänger-Themen 2
M Wie kommen diese Ausgaben zustande? Java Basics - Anfänger-Themen 12
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
G Erste Schritte BinarySearchTree - Wo kommen die Werte her? Java Basics - Anfänger-Themen 5
N Beim hochrechnen kommen garkeine/zuhohe zahlen raus Java Basics - Anfänger-Themen 6
E Senden von Objects an Client. Variablenwerte kommen nicht an Java Basics - Anfänger-Themen 5
A Beim txt Datei einlesen kommen zusätzliche Lehrzeichen dazu. Java Basics - Anfänger-Themen 5
T Von Millisekunden auf Stunden kommen Java Basics - Anfänger-Themen 2
G methodenvorschläge bei Punktnotation kommen nicht mehr !! (Eclipse) Java Basics - Anfänger-Themen 5
J Aus endlosschleife kommen Java Basics - Anfänger-Themen 5
K Befehl um am Anfang einer Methode zu kommen? Java Basics - Anfänger-Themen 9
R supermario problem (kommen nur zahlen raus) Java Basics - Anfänger-Themen 18
M Schreiben in eine Textdatei Daten kommen aus JTable Java Basics - Anfänger-Themen 2
F Wie kommen die Applets zum Client? Java Basics - Anfänger-Themen 7
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
SarahXyy Ergebnisse stimmen nicht überein? Java Basics - Anfänger-Themen 11
thomas55 Erste Schritte Modul läuft in IntelliJ, nicht in NetBeans Java Basics - Anfänger-Themen 11
richis-fragen Nicht ausführbares JAR, externe jars mit einbinden Java Basics - Anfänger-Themen 7
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
O Obfuscateter Code lässt sich nicht ausführen? Java Basics - Anfänger-Themen 7
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben