JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück

Christoph74

Bekanntes Mitglied
Hallo,

habe ein JOptionPane.showConfirmDialog() -> wenn ich jetzt mit der Tab Taste den Focus auf NEIN setze und dann Return drücke, gibt mir das JOptionPane 0 (=JOptionPane.YES_OPTION) zurück?!?

kann mir jemand erklären warum und wie ich das umgehe?

Danke
christoph
 
JFileChooser wird den Button "OK" als Default haben, Enter/Return führt den Default aus (sofern gesetzt) und Leertaste den aktuell fokussierten. 🙂
 
Sorry wollte natürlich JOptionPane schreiben statt FileChooser, kann den Post leider nicht mehr editieren. 🙁

Möglicherweise wäre folgender Aufruf eine Alternative für dich (je nachdem was du erreichen willst)

Java:
public static int showOptionDialog(Component parentComponent,
                   Object message,
                   String title,
                   int optionType,
                   int messageType,
                   Icon icon,
                   Object[] options,
                   Object initialValue)

Über "Options" kannst du die Buttons festlegen, welche angezeigt werden sollen und mit "initialValue" den Default wählen -> hier kannst du auch null übergeben.
 
Zuletzt bearbeitet:
@Joose
wenn man einen dialog hat der nur buttons enhält ... dann führt auch ENTER nich den default (da es dann keinen gibt) sondern den aktuellen focus aus
 
Moin,

@Joose
wenn man einen dialog hat der nur buttons enhält ... dann führt auch ENTER nich den default (da es dann keinen gibt) sondern den aktuellen focus aus
wo welcher Dialogart sprichst Du denn jetzt ???:L
Beim von Joose erwähnten OptionDialog kannst Du in der Tat mit dem letzten Parameter "initialValue" den Default vorgeben!
Beim ConfirmDialog geht dies allerdings nicht, weil die Optionen und deren Handling implizit festgelegt sind !!

Gruß
Klaus
 
Zuletzt bearbeitet:
ich rede von einem dialog die keine expliziten event-listener hat sondern wirklich lediglich nur einen text und zwei buttons

es gibt dabei nur zwei mögliche zustände für den focus : focus auf einem button oder nicht
wenn es keinen weiteren listener gibt der auf ein "ENTER" reagiert und der focus auf keinem der beiden buttons liegt ... wird auch keine aktion ausgeführt da es schlicht und einfach keinen listener gibt der drauf reagiert

liegt nun der focus auf einem der buttons gibt es einen listener der auf die inputs reagiert, ob dies allerdings SPACE oder ENTER ist ist dann völlig egal, weil beide den selben listener und damit den selben button auslösen


ums einfach auszudrücken : das TO einen falschen return erhält liegt daran das es irgendwo einen listener gibt der nun mal falsch reagiert bzw der auf etwas reagiert auf das er nicht reagieren sollte
 

Zurück
Oben