Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mémoriser la position des fenêtres : JFileChooser ?

5 réponses
Avatar
Nico
Bonjour,

J'aimerais conserver la position des fenêtres entre deux appels de mon
programme.
J'utilise un fichier .properties dans lequel je stocke la position, taille
et visibilité de la fenêtre.
Ca marche bien avec mes propres fenêtres, mais j'ai un problème avec
JFileChooser : il ne tient pas compte des appels à setSize(), setLocation()
que je peux faire avant l'appel à showOpenDialog().
J'ai essayé aussi avec setPreferredSize() mais ca ne marche pas très bien
non plus (la fenêtre a tendance a s'agrandir d'un coup sur l'autre).

Quelqu'un a une idée ?

Nicolas

5 réponses

Avatar
Nico
Euh ... elle est trop compliquée ma question ?

"Nico" a écrit dans le message de
news:4205ec1e$0$26213$
Bonjour,

J'aimerais conserver la position des fenêtres entre deux appels de mon
programme.
J'utilise un fichier .properties dans lequel je stocke la position, taille
et visibilité de la fenêtre.
Ca marche bien avec mes propres fenêtres, mais j'ai un problème avec
JFileChooser : il ne tient pas compte des appels à setSize(),
setLocation()

que je peux faire avant l'appel à showOpenDialog().
J'ai essayé aussi avec setPreferredSize() mais ca ne marche pas très bien
non plus (la fenêtre a tendance a s'agrandir d'un coup sur l'autre).

Quelqu'un a une idée ?

Nicolas




Avatar
Jocelyn
Salut,
J'ai un peu regardé le code du JFileChooser, et effectivement il
n'est pas étonnant que les methodes setLocation, setSize(), etc
restent sans effet car en interne, un objet de ce type se cree
simplement un JDialog sur lequel il fait un pack() (cf methode
createDialog()).
A partir de là, ca me parait difficile de récuperer ce que tu veux...
Cependant juste une question:
Autant je peux comprendre le fait de garder en mémoire les positions des
fenêtres, et d'ailleurs ca se fait couramment dans plein de logiciels,
autant je ne vois pas d'exemple ni d'intéret a vouloir garder en mémoire
l'ouverture d'une boite de dialogue, dont l'ouverture résulte a priori
d'une action simple (click, menu,...) dans une des fenetres... En as-tu
vraiment besoin ? Pourquoi ?

++
Avatar
Nico
"Jocelyn" a écrit dans le message de
news:4209d174$0$6618$
Salut,
J'ai un peu regardé le code du JFileChooser, et effectivement il
n'est pas étonnant que les methodes setLocation, setSize(), etc
restent sans effet car en interne, un objet de ce type se cree
simplement un JDialog sur lequel il fait un pack() (cf methode
createDialog()).
A partir de là, ca me parait difficile de récuperer ce que tu veux...


C'est bien ce qui me semblait aussi, vraiment dommage ...
Je me demande si je vais pas dériver ce JFileChooser pour récupérer le
JDialog en sortie de createDialog().

Cependant juste une question:
Autant je peux comprendre le fait de garder en mémoire les positions des
fenêtres, et d'ailleurs ca se fait couramment dans plein de logiciels,
autant je ne vois pas d'exemple ni d'intéret a vouloir garder en mémoire
l'ouverture d'une boite de dialogue, dont l'ouverture résulte a priori
d'une action simple (click, menu,...) dans une des fenetres... En as-tu
vraiment besoin ? Pourquoi ?


Dans le cas du JFileChooser, ce qui m'intéresse c'est essentiellement de
conserver la taille pour que si je l'agrandit une fois je conserve cette
taille pour les prochaines ouvertures.
Mon problème est lié à 2 choses :
- je veux ouvrir un fichier dans un répertoire qui en contient environ
mille, la taille par défaut du JFileChooser fait que je ne vois que 30
fichiers (5 * 6) à la fois sur les mille. Vraiment pas pratique et j'en ai
marre de l'agrandir à chaque fois pour trouver le fichier qui m'intéresse.
- et en plus j'ai ajouté une partie prévisualisation du fichier sélectionné
(avec setAccessory()) dans le JFileChooser et donc la place dédiée aux
fichiers s'en trouve d'autant plus réduite : plus que 24 fichiers.

Pour le répertoire avec 1000 fichiers je sais que c'est pas top, mais ca
m'obligerait à revoir pas mal de choses ailleurs, donc je laisse comme ca.

Merci d'avoir regardé :)

Avatar
Nico
"Nico" a écrit dans le message de
news:420a46e6$0$5223$

"Jocelyn" a écrit dans le message de
news:4209d174$0$6618$
Salut,
J'ai un peu regardé le code du JFileChooser, et effectivement il
n'est pas étonnant que les methodes setLocation, setSize(), etc
restent sans effet car en interne, un objet de ce type se cree
simplement un JDialog sur lequel il fait un pack() (cf methode
createDialog()).
A partir de là, ca me parait difficile de récuperer ce que tu veux...


C'est bien ce qui me semblait aussi, vraiment dommage ...
Je me demande si je vais pas dériver ce JFileChooser pour récupérer le
JDialog en sortie de createDialog().


Juste pour tenir au courant si ca intéresse quelqu'un d'autre, la dérivation
avec surcharge de createDialog()marche pour conserver la taille :
protected JDialog createDialog(Component parent) {
dialog = super.createDialog(parent);
if (dialog != null) {
if (dialogLocation != null) {
dialog.setLocation(dialogLocation);
}
if (dialogSize != null) {
dialog.setSize(dialogSize);
}
}
return dialog;
}


Avatar
Christophe Roudet
regarde peut etre http://www.jayasoft.fr/org/modules/uistate/overview.php?

Christophe

"Nico" wrote in message
news:42093d2e$0$5218$
Euh ... elle est trop compliquée ma question ?

"Nico" a écrit dans le message de
news:4205ec1e$0$26213$
Bonjour,

J'aimerais conserver la position des fenêtres entre deux appels de mon
programme.
J'utilise un fichier .properties dans lequel je stocke la position,
taille
et visibilité de la fenêtre.
Ca marche bien avec mes propres fenêtres, mais j'ai un problème avec
JFileChooser : il ne tient pas compte des appels à setSize(),
setLocation()

que je peux faire avant l'appel à showOpenDialog().
J'ai essayé aussi avec setPreferredSize() mais ca ne marche pas très bien
non plus (la fenêtre a tendance a s'agrandir d'un coup sur l'autre).

Quelqu'un a une idée ?

Nicolas