ich einen Editor bin zu entwickeln, wo an einem gewissen Punkt der Benutzer eine für die Auswahl einer Fläche innerhalb des Editors modal Dialog öffnet sich:JDialog kehrt Wert zu früh
Mit einem Klick auf „Select-Bereich ... "wird der Dialog vorübergehend auf setVisible(false);
eingestellt. Danach kann der Benutzer einen Bereich mit der Maus auswählen. Nach dem Loslassen der Maustaste öffnet sich der Dialog erneut mit setVisible(true);
und die Informationen des ausgewählten Bereichs werden in den Textfeldern angezeigt. Wenn der Benutzer auf "OK" klickt, wird der Dialog gelöscht und die Informationen sollten an den Editor zurückgegeben werden.
Der Code für den Dialog Wert Rückkehr ist
@Override
public Area handleDialog() {
setVisible(true); // Shows the dialog and blocks the parent window
return selectedArea;
}
Mein Problem ist nun, dass der Wert zu früh zurückgeführt wird, wenn der Anruf an setVisible(false);
auftritt und nicht, wenn der Benutzer klickt auf „Ok“. So wird null
zurückgegeben, da selectedArea
zu diesem Zeitpunkt noch nicht zugewiesen ist. Ich denke, das passiert, weil das vorübergehende Verbergen des Dialogs die Modalität zurücksetzt und das Elternfenster wieder freigibt.
Gibt es eine Möglichkeit, den Rückgabewert zurückzuhalten und nur zurückzugeben, wenn Sie auf "Ok" klicken? Wenn nicht, denke ich, ich könnte meine Logik umschreiben und stattdessen mit einem WindowListener
arbeiten, um dies zu umgehen.
Sind Sie sicher, dass Ihr Dialog modal ist? – VGR
@VGR Ja, es erweitert 'JDialog' und im Konstruktor ich' 'super (JOptionPane.getRootFrame(), true);' – QBrute