action-listener, um JDialog für angeklickte Schaltfläche
Habe ich Hauptanwendung, wo ist die Tabelle mit den Werten. Dann klicke ich auf "Hinzufügen" klicken, wird ein neues CUSTOM (ich habe es selbst) JDialog Typ "popup" kommt. Da kann ich Eingangswert, machen einige Zecken und klicken Sie auf "Bestätigen". So habe ich Lesen müssen, dass die Eingabe aus dialog, also kann ich diesen Wert hinzufügen, um die Tabelle im Hauptfenster der Anwendung.
Wie kann ich Zuhören, wenn die "bestätigen" - Taste gedrückt wird, so lese ich, dass es Wert danach?
addISDialog = new AddISDialog();
addISDialog.setVisible(true);
addISDialog.setLocationRelativeTo(null);
//somekind of listener...
//after "Confirm" button in dialog was pressed, get value
value = addISDialog.ISName;
- Ich habe implementiert die listener-innen JDialog und ich kann hören button in diesem dialog, aber ich brauche zu hören, dass button außen dialog - in der main-Anwendung, wo ich angerufen, dass dialog
- Bearbeiten können Sie die
JDialog
Klasse? Wenn dem so ist, könnte uns dieActionEvent
zu einer anderen Klasse, die dasActionListener
interface und die Klasse tun können, was Sie wollen. - Ich machte AddISDialog mich (public class AddISDialog extends JDialog implements ActionListener) also ja, ich kann es Bearbeiten. Was meinst du mit Weiterleitung ActionEvent an eine andere Klasse? Wie kann ich es tun?
- Eine Möglichkeit dafür ist die Registrierung eines
PropertyChangeListener
zu denJDialog
Instanz und haben dieJDialog
- Instanz verwenden Sie einePropertyChangeSupport
Instanz, die Feuer-Eigenschaft change-Ereignis, das angibt, dass der bestätigen-button gedrückt wurde. - "addieren Sie diesen Wert zur Tabelle" Sie können passieren die Tabelle Modell dem dialog im Konstruktor (oder implementieren Sie eine
setModel()
Methode in das benutzerdefinierte Dialogfeld). BTW - Für eine bessere Hilfe früher, nach einem SSCCE. addISDialog.setLocationRelativeTo(null);
sollte wohl so etwas wieaddISDialog.setLocationRelativeTo(mainApplication);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das Dialogfeld wird ausgeblendet, nachdem der Benutzer die Taste bestätigen:
setVisible(true)
auf den dialog. Lediglich die Abfrage der dialog-Objekt für seinen Zustand in den code-Zeilen unmittelbar nach dem Aufruf vonsetVisible(true)
auf den dialog.Wenn das Dialogfeld geöffnet bleiben, nachdem der Benutzer die Taste bestätigen:
Für mehr Details, bitte zeigen Sie uns relevanten bits des Codes, oder noch besser, einen sscce.
Beispielsweise zu erlauben, dass der JDialog-Klasse zu akzeptieren, die außerhalb Hörer, man könnte es ein JTextField und ein JButton:
und eine Methode, die es ermöglicht außerhalb von Klassen hinzufügen eines ActionListener für den button:
Dann eine außerhalb der Klasse können rufen Sie einfach die `addConfirmListener (...) - Methode auf, um seine ActionListener zu den confirmBtn.
Beispiel:
Vorbehalte aber: ich weiß nicht empfehlen Unterklassen von JFrame oder JDialog, es sei denn absolut notwendig. Es wurde getan, hier einfach nur um der Kürze Willen. Auch ich selbst benutze lieber einen modalen dialog für die Lösung dieses Problems und nur wieder den dialog öffnen, wenn nötig.
Edit 2
Ein Beispiel für die Verwendung eines Modal dialog:
setVisible(true)
auf den dialog.Warum nicht Sie überprüfen, ob Ihre jDialog sichtbar ist?
funktioniert dies auch.
oder wenn Sie bereits swinging
haben Sie abgedeckt.
Nach bedingte trigger JOptionPane senden Sie uns Ihre Abmahnung oder was auch immer modal message:
überprüfen Sie Ihre Optionen für JOptionPane.* um zu bestimmen, Nachricht geben.