OVH Cloud OVH Cloud

Fermeture d'une boite de dialogue

6 réponses
Avatar
nicolas.letavernier
Bonjour,

Il m'arrive quelque chose qui =E0 vrai dire m'=E9chappe alors si
quelqu'un peut m'aider : quand je ferme une boite de dialogue (que ce
soit une ouverte avec showMessageDialog ou bien une autre que j'ai
cr=E9e dans une classe en extendant JDialog) lorsque je la ferme (clique
sur OK pr la premiere ou la croix pr la seconde), elle est toujours l=E0
!? Et lorsque je reclique elle disparait enfin....

Ma question comment se fait-il qu'elle disparaisse qu'au bout du
second essai ? Sachant que je precise au premier essai il y a une sorte
de rafraichissement, ce qui indique que l'action a =E9t=E9 prise en
compte !?

Merci d'avance,
( Nico )

[code]
if (txtVehiculo.getText().equals("")) {
JOptionPane panel =3D new JOptionPane();
panel.showMessageDialog (this,
"Message",
"Titre",
panel.INFORMATION_MESSAGE);

} else {
Validation_Alquiler dlg =3D new Validation_Alquiler(this);
Dimension dlgSize =3D dlg.getPreferredSize();
Dimension frmSize =3D getSize();
Point loc =3D getLocation();
dlg.setLocation(loc.x + 100, loc.y + 100);
dlg.setModal(true);
dlg.pack();
dlg.show();
}
[/code]

6 réponses

Avatar
Hervé AGNOUX
Je ne vois rien dans ton code qui expliquerait l'apparition de deux boites
de dialogues successives, mais je peux me tromper.

Quelques commentaires, mais peut être que tu les connaissais déjà.

wrote:


[code]
if (txtVehiculo.getText().equals("")) {
JOptionPane panel = new JOptionPane();
panel.showMessageDialog (this,
"Message",
"Titre",
panel.INFORMATION_MESSAGE);



Ici il est inutile de créer une instance de JOptionPane, puisque show... est
une méthode statique. Tu peux écrire directement :
JOptionPane.showMessageDialog(..., JOptionPane.INFORMATION_MESSAGE) et ça
fera exactement la même chose.


} else {
Validation_Alquiler dlg = new Validation_Alquiler(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation(loc.x + 100, loc.y + 100);
dlg.setModal(true);
dlg.pack();
dlg.show();
}


A quoi servent dlgSize et frmSize ?


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
nicolas.letavernier
Je note pour la premiere information. Les variables dlgSize et frmSize
m'etaient utiles avant parce que je centrais la fenêtre mais c vrai
que je ne m'en sers plus ! Mais sinon de manière générale, qu'est ce
qui pourrait faire qu'une fenêtre reapparaisse immediatement après sa
fermeture ?

[ancien code]
Cadre_principal_AboutBox dlg = new
Cadre_principal_AboutBox(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
[/ancien code]
Avatar
Hervé AGNOUX
wrote:

Je note pour la premiere information. Les variables dlgSize et frmSize
m'etaient utiles avant parce que je centrais la fenêtre mais c vrai
que je ne m'en sers plus ! Mais sinon de manière générale, qu'est ce
qui pourrait faire qu'une fenêtre reapparaisse immediatement après sa
fermeture ?



La seule possibilité est simplement que le logiciel la fasse réapparaître !
Les fenêtre ne sont dotées d'aucune propriété de sorcellerie et elle
n'apparaisse que si le logiciel le leur commande. Donc il faut regarder ton
logiciel :-)


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
nicolas.letavernier
Avatar
flipouk
Hervé AGNOUX wrote:
wrote:


Je note pour la premiere information. Les variables dlgSize et frmSize
m'etaient utiles avant parce que je centrais la fenêtre mais c vrai
que je ne m'en sers plus ! Mais sinon de manière générale, qu'est ce
qui pourrait faire qu'une fenêtre reapparaisse immediatement après sa
fermeture ?




La seule possibilité est simplement que le logiciel la fasse réapparaître !
Les fenêtre ne sont dotées d'aucune propriété de sorcellerie et elle
n'apparaisse que si le logiciel le leur commande. Donc il faut regarder ton
logiciel :-)


Je suis d'accord avec Hervé. Cependant, j'ai déjà constaté des problèmes

d'affichage de composants Swing inexplicables. C'est quand j'étais sous
KDE 3.2. En faisant des recherches, j'avais trouvé qu'un bug de KDE
était responsable de ces comportements étranges. Je ne me souviens plus
des détails, mais je me rappelle que cela m'empêchais d'utiliser jEdit
de facon normale.

Juste une idée...

A+

F.


Avatar
David
Le Sat, 14 Jan 2006 01:43:36 -0800, nicolas.letavernier a écrit :

Je note pour la premiere information. Les variables dlgSize et frmSize
m'etaient utiles avant parce que je centrais la fenêtre mais c vrai que
je ne m'en sers plus ! Mais sinon de manière générale, qu'est ce qui
pourrait faire qu'une fenêtre reapparaisse immediatement après sa
fermeture ?

[ancien code]
Cadre_principal_AboutBox dlg = new
Cadre_principal_AboutBox(this);
Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize > getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
[/ancien code]


Peut tu préciser où est appelé ce code ?
Si c'est dans paint() c'est normal que ça réapparaisse.