Bon, j'ai un soucis. Sur un précédent topic, j'avais posté un code qui avait fait fureur. En gros :
Code :
- public class MyView extends JPanel {
- ...
- }
|
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 :
- public class MyView {
- private JComponent component = new JPanel();
- public MyView() {
- //ici j'empile des trucs sur component.
- }
- public JComponent getComponent() {
- return component;
- }
- }
|
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 :
- JFrame frame = new JFrame();
- MyView view = new MyView();
- 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 :
- public void add(Container c) {
- c.add(component);
- }
|
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