Le retour de la valeur de JDialog; dispose(), setVisible(false) - exemple
Je sais que cette question apparaît assez fréquemment dans comme ici:
mais je tiens à présenter quelques très spécifiques, par exemple... je suis tout simplement pas sûr si j'ai bien faire les choses.
J'ai un JDialog dans lequel je peux me taper des valeurs, sélectionnez les cases à cocher... quoi que...
J'ai également une Réponse de l'objet créé dans MyDialog qui représente la MyDialog "réponse".
Dans JFrame qui appelle/crée JDialog:
MyDialog d = new MyDialog(this, ...);
d.showDialog();
//After MyDialog is closed (it's modal):
MyDialog.Response dialogResponse = d.getDialogResponse();
//Do something with response...
Dans la boîte de Dialogue (dialogue peut être fermé en cliquant sur le bouton "Enregistrer"):
btnSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialogResponse = prepareResponse(); //prepares response on the basis of some data introduced by a user; dialogResponse is called from JFrame after Dialog is closed
setVisible(false);
dispose(); //<-- Important
}
});
Ma question est:
Cette solution fonctionne, je veux dire, la ligne MyDialog.Response dialogResponse = d.getDialogResponse();
retourne des valeurs propres, mais...
si je ferme la boîte de dialogue à l'aide de disposer(), tous de la boîte de dialogue ressources peuvent être des ordures collectées (ne pas... difficile à prédire, ai-je le droit?). Ainsi en est-il correct pour récupérer ma boîte de dialogue de la réponse de cette façon... Peut-être que dans ce cas je devrais écrire seulement setVisible(false);
sans dispose()
.
JDialog
plus tard, ne jetez pas et il suffit de l'utiliser setVisible(false)
, sinon vous pouvez en disposer sans aucun problèmePas sûr de comprendre, d'où le commentaire, mais vous ne pouvez pas vous débarrasser de la boîte de Dialogue à partir de l'Image?
Oui, mais je suis surtout curieux de savoir si je peux accéder à ma boîte de dialogue de réponse à l'issue dispose() est appelée sur le Dialogue
Si j'ai bien compris votre question dans le bon sens, pourquoi ne pas faire une classe appelée
DialogResponse
que vous remplissez des valeurs de dialogue, d'apporter les modifications nécessaires à votre DialogResponse
de la classe de l'objet et simplement return
cet objet au parent JFrame
, de cette façon, vous vraiment n'avez pas à vous inquiéter JDialog
étant de disposer ou non, et en plus, vous pouvez utiliser la même classe pour de plus amples mise à jour, si le même JDialog
est utilisé à nouveau pour obtenir de réponse. Bien que l'utilisation de cette si votre JDialog
a énorme à partager avec votre classe parent.u pourrait s'il vous plaît aidez-moi sur stackoverflow.com/questions/31652594/... ? J'ai déjà changer la JFrame à JDialog. Maintenant j'ai un problème enregistrer le JDialog contenu.. @guitar_freak
OriginalL'auteur guitar_freak | 2013-08-20
Vous devez vous connecter pour publier un commentaire.
De la cité La documentation javadoc:
Donc, votre Réponse sera conservé. Tous les
dispose()
n'est la libération de la native de l'écran de ressources, les autres membres ne sont pas marqués pour la collecte des ordures.Aussi, si vous voulez être certain, vous pouvez simplement appeler
dispose()
juste après que vous avez récupéré votre objet de réponse.OriginalL'auteur MarioP
pas vrai que quelque chose est GC ed seulement non_important valeur pour les Graphiques/2D
il n'est pas une raison pour créer cet Objet au runtime, re_use cet Objet
OriginalL'auteur mKorbel
pourquoi vous n'utilisez pas de variables de classe (statique privé ou public static) et d'utiliser une méthode de fabrique
OriginalL'auteur GoAntonio
OriginalL'auteur user5880243