Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1237 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Swing] encapsulation et empilement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Swing] encapsulation et empilement

n°617056
Cherrytree
cn=?
Posté le 20-01-2004 à 21:21:56  profilanswer
 

Bon, j'ai un soucis. Sur un précédent topic, j'avais posté un code qui avait fait fureur. En gros :
 

Code :
  1. public class MyView extends JPanel {
  2. ...
  3. }


 
Ce à quoi on m'avait rétorqué, à juste titre que ma vue n'était pas un panel au sens héritage du terme, et que cet extends ne se justifiait pas. Je le comprends bien, mais...
 
J'ai réfléchi au problème et je n'ai pas trouvé de solutions.
 
Solution 1.

Code :
  1. public class MyView {
  2.     private JComponent component = new JPanel();
  3.     public MyView() {
  4.         //ici j'empile des trucs sur component.
  5.     }
  6.     public JComponent getComponent() {
  7.         return component;
  8.     }
  9. }


Cette fois, MyView n'est plus un Panel, mais encapsule un panel (component) dont on pourra obtenir une référence afin notamment de faire ceci dans le Container d'une JFrame par exemple :

Code :
  1. JFrame frame = new JFrame();
  2. MyView view = new MyView();
  3. frame.getContentPane().add(view.getComponent());


Le problème alors c'est que l'on peut toujours appeler toutes les méthodes que l'on veut sur mon JComponent ainsi encapsulé...
 
Solution 2.
Je ne mets pas le getter, mais à la place je mets une méthode :

Code :
  1. public void add(Container c) {
  2.     c.add(component);
  3. }


Mais bon, c'est pas top, je trouve. Parce que c'est l'ordre inverse de l'empilement naturel. Bref.


---------------
Le site de ma maman
mood
Publicité
Posté le 20-01-2004 à 21:21:56  profilanswer
 

n°617061
nraynaud
lol
Posté le 20-01-2004 à 21:29:06  profilanswer
 

cherrytree a écrit :

Bon, j'ai un soucis. Sur un précédent topic, j'avais posté un code qui avait fait fureur. En gros :
 

Code :
  1. public class MyView extends JPanel {
  2. ...
  3. }


 
Ce à quoi on m'avait rétorqué, à juste titre que ma vue n'était pas un panel au sens héritage du terme, et que cet extends ne se justifiait pas. Je le comprends bien, mais...
 
J'ai réfléchi au problème et je n'ai pas trouvé de solutions.
 
Solution 1.

Code :
  1. public class MyView {
  2.     private JComponent component = new JPanel();
  3.     public MyView() {
  4.         //ici j'empile des trucs sur component.
  5.     }
  6.     public JComponent getComponent() {
  7.         return component;
  8.     }
  9. }


Cette fois, MyView n'est plus un Panel, mais encapsule un panel (component) dont on pourra obtenir une référence afin notamment de faire ceci dans le Container d'une JFrame par exemple :

Code :
  1. JFrame frame = new JFrame();
  2. MyView view = new MyView();
  3. frame.getContentPane().add(view.getComponent());


Le problème alors c'est que l'on peut toujours appeler toutes les méthodes que l'on veut sur mon JComponent ainsi encapsulé...
 
Solution 2.
Je ne mets pas le getter, mais à la place je mets une méthode :

Code :
  1. public void add(Container c) {
  2.     c.add(component);
  3. }


Mais bon, c'est pas top, je trouve. Parce que c'est l'ordre inverse de l'empilement naturel. Bref.

les verbes à l'envers, on leur met une préposition : addTo(Container c)
 
Par contre, je vois pas le problème avec la solution 1 qui me parraît la même, à tel point que je l'ai utilisé personnellement dans mon projet de chat et ai bien l'intention de continuer.


---------------
trainoo.com, c'est fini
n°617151
Cherrytree
cn=?
Posté le 20-01-2004 à 22:53:39  profilanswer
 

On m'avait rétorqué que pouvoir faire un setBorder(Border) sur mon component n'était pas de très bon goût.


---------------
Le site de ma maman
n°617158
nraynaud
lol
Posté le 20-01-2004 à 22:58:28  profilanswer
 

cherrytree a écrit :

On m'avait rétorqué que pouvoir faire un setBorder(Border) sur mon component n'était pas de très bon goût.

perso ça me dérange pas.


---------------
trainoo.com, c'est fini
n°617366
Cherrytree
cn=?
Posté le 21-01-2004 à 06:45:27  profilanswer
 

Je crois que c'était cet intégriste de Taiche qui m'avait fait la remarque.


---------------
Le site de ma maman
n°617379
darklord
You're welcome
Posté le 21-01-2004 à 08:18:10  profilanswer
 

ouais mon l'ot taiche avec son swt là, faut pas le prendre au sérieux non plus :o


---------------
Just because you feel good does not make you right
n°617387
Cherrytree
cn=?
Posté le 21-01-2004 à 08:32:45  profilanswer
 

C'est vrai qu'il est pas crédible comme développeur Java. :/


---------------
Le site de ma maman
n°618329
meumeul
Stay Heavy
Posté le 21-01-2004 à 19:44:01  profilanswer
 

moi j'aime bien les extends JPanel
pkoi ca seré mal?

n°618333
nraynaud
lol
Posté le 21-01-2004 à 19:49:54  profilanswer
 

meumeul a écrit :

moi j'aime bien les extends JPanel
pkoi ca seré mal?

si je fais un add(JComponent) à ton composant, il va aimer ? en général non.


---------------
trainoo.com, c'est fini
n°619902
Cherrytree
cn=?
Posté le 23-01-2004 à 11:06:23  profilanswer
 

Et que ce passera t'il si on fait :
 

Code :
  1. myView.getComponent().add(aComponent);


 
??


---------------
Le site de ma maman
mood
Publicité
Posté le 23-01-2004 à 11:06:23  profilanswer
 

n°620592
nraynaud
lol
Posté le 23-01-2004 à 21:32:56  profilanswer
 

cherrytree a écrit :

Et que ce passera t'il si on fait :
 

Code :
  1. myView.getComponent().add(aComponent);


 
??

Là c'est le bordel hérité de AWT, c'est du code, fossile auquel je considère qu'on ne doit pas toucher.


---------------
trainoo.com, c'est fini
n°620594
Cherrytree
cn=?
Posté le 23-01-2004 à 21:34:40  profilanswer
 

gni ? Je comprends pas.


---------------
Le site de ma maman

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Swing] encapsulation et empilement

 

Sujets relatifs
Livre sur swing[java swing] probleme de taille avec un JTextField
[Swing] Jdialog et boutons "precedent" "suivant"Canvas3D dans un Swing JPanel
Document/EditorKit/View : DESS SWING needed[java]Problème d'import de classe swing
[Swing] Attendre la fin d'un repaint() pour continuer l'execution...[Java]Recherche un composant swing
[Java-Swing] Auto positionnement d'un JScrollPane[swing] mission impossible : fond transparent dans une JFrame
Plus de sujets relatifs à : [Swing] encapsulation et empilement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR