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

[debutant] empêcher un JInternalFrame d'être changé

5 réponses
Avatar
julien
Bonjour
J'ai une application qui doit afficher des frames les une après les
autres, l'ordre peut changer suivant certains paramètres.

J'ai pensé qu'il était préférable d'utiliser des JInternalFrame pour
pouvoir facilement afficher celle qui convient. Mais comment faire pour
empêcher l'utilisateur de bouger la JInternalFrame à l'intérieur du
DesktopPane (en "grabbant" la barre de titre avec la souris)? Je n'ai
rien trouvé dans les API de Java fournis par Sun.

Également, je n'ai pas réussi à trouver qu'elle est la meilleure méthode
pour communiquer entre JInternalFrame, sachant que chaque JInternalFrame
est une classe différente.

Merci
Julien

5 réponses

Avatar
jocelyn
Salut,

Si le seul but de ta manip' est de pouvoir afficher un ecran ou un autre
selon
tes criteres, alors je pense que tu fais fausse route. Pour faire cela
utilise plutot
un CardLayout avec des JPanel. Les JInternalFrame ne poursuivent pas ce but.
On les utilise plutot dans le cas d'applis MDI, c'est-a-dire multi-documents
entre
lesquels l'utilisateur peut se balader a volonté (style open office par
exemple).
D'autre part, si tes écrans doivent communiquer entre eux, et quelle que
soit l'option
que tu choisiras, tu devras stocker à un niveau supérieur la reference à
chaque ecran,
et passer par ce niveau superieur pour dialoguer entre 2 ecrans, sinon ton
appli va etre
illisible. Mais effectivement c'est à toi de le faire et java ne prevoit
rien en standard.

++

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même

"julien" a écrit dans le message news:
415785fc$0$23945$
Bonjour
J'ai une application qui doit afficher des frames les une après les
autres, l'ordre peut changer suivant certains paramètres.

J'ai pensé qu'il était préférable d'utiliser des JInternalFrame pour
pouvoir facilement afficher celle qui convient. Mais comment faire pour
empêcher l'utilisateur de bouger la JInternalFrame à l'intérieur du
DesktopPane (en "grabbant" la barre de titre avec la souris)? Je n'ai
rien trouvé dans les API de Java fournis par Sun.

Également, je n'ai pas réussi à trouver qu'elle est la meilleure méthode
pour communiquer entre JInternalFrame, sachant que chaque JInternalFrame
est une classe différente.

Merci
Julien


Avatar
julien
jocelyn wrote:
D'autre part, si tes écrans doivent communiquer entre eux, et quelle que
soit l'option
que tu choisiras, tu devras stocker à un niveau supérieur la reference à
chaque ecran,
et passer par ce niveau superieur pour dialoguer entre 2 ecrans, sinon ton
appli va etre
illisible. Mais effectivement c'est à toi de le faire et java ne prevoit
rien en standard.


Merci pour ces renseignemnets.
Je n'ai pas réussi à trouver d'exemple de tel communication. Quelle
méthode utilise-ton pour comunniquer entre Frames, ou entre une Frame
est son "lanceur":
-une variable globale qui seraient partagées?
-un pipe?
-autre chose?

Merci
Julien

Avatar
jocelyn
Disons que tu as un JPanel pere qui contient, via un cardLayout, les JPanel
fils.
Le pere stocke une reference a chacun de ses fils, et les fils stockent la
reference de leur pere. Imaginons que le panel fils1 veuille envoyer un
message
au panel fils2. Attention ce qui suit n'est la QUE pour illustrer le
principe !
Dans fils1 tu auras:
pere.envoieMessageFils2();
Dans pere tu auras:
public void envoieMessageFils2() {
fils2.envoieMessage();
}
Et dans fils2:
public void envoieMessage() {
......
}

Evidemment il y a un fort couplage entre le pere et les fils, mais au moins
tu evites
le couplage entre freres. Si les messages a envoyer entre freres deviennent
nombreux,
- soit il y a peut-etre un probleme de conception de tes ecrans,
- soit tu peux commencer a reflechir a des trucs plus aboutis techniquement,
comme
creer un jeu d'evenements personnalises.

Voila j'espere que c'est + clair maintenant :)

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même

"julien" a écrit dans le message news:
415cea79$0$29605$
jocelyn wrote:
D'autre part, si tes écrans doivent communiquer entre eux, et quelle que
soit l'option
que tu choisiras, tu devras stocker à un niveau supérieur la reference à
chaque ecran,
et passer par ce niveau superieur pour dialoguer entre 2 ecrans, sinon
ton


appli va etre
illisible. Mais effectivement c'est à toi de le faire et java ne prevoit
rien en standard.


Merci pour ces renseignemnets.
Je n'ai pas réussi à trouver d'exemple de tel communication. Quelle
méthode utilise-ton pour comunniquer entre Frames, ou entre une Frame
est son "lanceur":
-une variable globale qui seraient partagées?
-un pipe?
-autre chose?

Merci
Julien



Avatar
julien
jocelyn wrote:
Disons que tu as un JPanel pere qui contient, via un cardLayout, les JPanel
fils.
Le pere stocke une reference a chacun de ses fils, et les fils stockent la
reference de leur pere. Imaginons que le panel fils1 veuille envoyer un
message
au panel fils2. Attention ce qui suit n'est la QUE pour illustrer le
principe !
Dans fils1 tu auras:
pere.envoieMessageFils2();
Dans pere tu auras:
public void envoieMessageFils2() {
fils2.envoieMessage();
}
Et dans fils2:
public void envoieMessage() {
......
}

Evidemment il y a un fort couplage entre le pere et les fils, mais au moins
tu evites
le couplage entre freres. Si les messages a envoyer entre freres deviennent
nombreux,
- soit il y a peut-etre un probleme de conception de tes ecrans,
- soit tu peux commencer a reflechir a des trucs plus aboutis techniquement,
comme
creer un jeu d'evenements personnalises.

Voila j'espere que c'est + clair maintenant :)


Bonjour
En fait, ce qui me manque vraiment, c'est à quoi ressemble la methode
public void envoieMessage(). Je n'ai pas trouvé d'exemple.

Merci
Julien

Avatar
jocelyn
Pour ca il faudrait que tu me donnes un exemple concret de ce que tu veux
faire :)

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même