2016-08-30 3 views
0

Einige der vom Dialog APIDialog von Dialog API bereitgestellten Konstruktoren akzeptieren JPanel als ersten Parameter. Ist es möglich, eine Schaltfläche innerhalb dieses Bedienfeld zu haben, das das Schließen des Dialogs auslöst sowie einen Rückgabewert angibt?Schließen von DialogDescriptor und Festlegen seines Werts mithilfe einer darin enthaltenen Schaltfläche

Ich möchte einen solchen Dialog "Konflikt lösen" erstellen, so wie Ms Windows das Kopieren/Verwerfen/Kopieren beider Optionen anbietet, wenn wir Dateien aus einem Verzeichnis kopieren, aber Dateien mit demselben Namen im Zielverzeichnis. Beachten Sie, dass durch Drücken einer der drei Schaltflächen der Dialog geschlossen wird, aber keine von ihnen als Abschlussoptionen aufgeführt wird. Die Closing-Optionen selbst bestehen aus "Skip" und "Cancel".

+0

Ich kann es nicht testen, aber [dieser Konstruktor] (http://bits.netbeans.org/dev/javadoc/org-openide-dialogs/org/openide/DialogDiskriptor.html#DialogDescriptor%28java.lang. Objekt,% 20java.lang.String,% 20boolean,% 20java.lang.Object [) und auch das letzte ermöglicht es Ihnen, die verwendeten Optionen anzugeben. Sie könnten wahrscheinlich auch einfach ['setOptions()'] (http://bits.netbeans.org/dev/javadoc/org-openide-dialogs/org/openide/NotifyDescriptor.html#setOptions-java.lang.Object: EIN-). –

+1

@LukasRotter genau wie im Dokument angegeben, erscheinen diese 'Optionen' als Schaltflächen in der ** Schaltflächenzeile ** des Dialogs (die Schaltflächenzeile selbst ist Teil des Dialogs, außerhalb unseres Panels). Genau so stelle ich die Optionen "Überspringen" und "Abbrechen" ein. Was ich anfänglich gefragt habe, ist, wie wir den Dialog schließen können, indem wir einen Knopf ** innerhalb des Panels drücken. – ddanurwenda

Antwort

0

Vielleicht können Sie versuchen, den anderen Weg zu denken: Ein Panel zu manipulieren, das den Dialog außerhalb davon manipuliert, führt zu unnötiger Abhängigkeit. Warum sollte der Dialog nicht passieren, auf welche Schaltfläche beim Schließen geklickt wird und die folgende Logik im Panel ausgeführt wird? Sie wollen etwas tun, wenn "Überspringen" angeklickt wird und etwas anderes, wenn "Abbrechen" angeklickt wird, oder? Lassen Sie also das Dialogfeld Ihrem Panel mitteilen, was geklickt wurde, anstatt dass das Panel über den Dialog verfügt, wäre die Kopplung geringer.

Verwandte Themen