Pseudo-Archive Java :
Accueil -|- Visuel -|- Logistique -|- Applications réparties
La pseudo-archive Java est un service proposé par la SARL diaam informatique, et il est hébergé par la Sogid.
diaam informatique
Date sent:      	Mon, 09 Apr 2001 10:31:27 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr
Subject:        	Q implémentation
Send reply to:  	java@u-strasbg.fr

Bonjour,
J'analyse un source du Sun qui implémente un JTreeTable :

     <...>
     /**
      * This example shows how to create a simple JTreeTable
     component,
      * by using a JTree as a renderer (and editor) for the cells
     in a
      * particular column in the JTable.
      *
      * @version %I% %G%
      *
      * @author Philip Milne
      * @author Scott Violet
      */

     public class JTreeTable extends JTable {
         protected TreeTableCellRenderer tree;

         public JTreeTable(TreeTableModel treeTableModel) {
             super();

             // Create the tree. It will be used as a renderer and
     editor.
             tree = new TreeTableCellRenderer(treeTableModel);

             // Install a tableModel representing the visible rows
     in the tree.
             super.setModel(new
     TreeTableModelAdapter(treeTableModel, tree));

             // Force the JTable and JTree to share their row
     selection models.
             tree.setSelectionModel(new DefaultTreeSelectionModel()
     {
                 // Extend the implementation of the constructor,
     as if:
                 /* public this() */ {
                 setSelectionModel(listSelectionModel);
                 }
             });

             // Make the tree and table row heights the same.
             tree.setRowHeight(getRowHeight());

             // Install the tree editor renderer and editor.
             setDefaultRenderer(TreeTableModel.class, tree);
             setDefaultEditor(TreeTableModel.class, new
     TreeTableCellEditor());

             setShowGrid(false);
             setIntercellSpacing(new Dimension(0, 0));
         }
     <...>

Si quelqu'un peut m'aider à comprendre la partie en "gras" ce serait
sympa. En fait c'est ce style d'implémentation que je vois souvent qui
m'intrigue : object.method(new Class() {
    // Code
})
un new avec du code qui suit, comme si Class était implémenté en même
temps ... Alain


     

Send reply to:  	<godreul1@bst.bsf.alcatel.fr>
From:           	"Rodolphe Godreul" <rodolphe@godreul.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: Q implémentation
Date sent:      	Mon, 9 Apr 2001 10:37:05 +0200

un new avec du code qui suit, comme si Class était implémenté en même
temps .. Alain

ca permet de surcharger une (des) methode(s) d une classe.
 c est aussi de cette facon que tu va creer des inner-class
en faisant un new sur une interface et en implementant les methodes de
cette interface.


     

Date sent:      	Mon, 09 Apr 2001 10:58:56 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



Rodolphe Godreul a écrit :

>  un new avec du code qui suit, comme si Class était implémenté en même
> temps ...
> Alain ca permet de surcharger une (des) methode(s) d une classe. c est
> aussi de cette facon que tu va creer des inner-classen faisant un new
> sur une interface et en implementant les methodes de cette interface.
>

Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
exemple, j'ai pas l'impression d'être dans en surcharge
(setSelectionModel() n'étant pas une méthode de DefaultTreeSelectionModel)
ni en inner-class (DefaultTreeSelectionModel n'est pas une interface) ...
Alain.

     

Send reply to:  	<godreul1@bst.bsf.alcatel.fr>
From:           	"Rodolphe Godreul" <rodolphe@godreul.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: Q implémentation
Date sent:      	Mon, 9 Apr 2001 11:03:01 +0200

Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
exemple, j'ai pas l'impression d'être dans en surcharge
(setSelectionModel() n'étant pas une méthode de DefaultTreeSelectionModel)
ni en inner-class (DefaultTreeSelectionModel n'est pas une interface) ...
Alain.

        tree.setSelectionModel(new DefaultTreeSelectionModel() {
            // Extend the implementation of the constructor, as if:
            /* public this() */ {
            setSelectionModel(listSelectionModel);
            }
        });

     

Date sent:      	Mon, 09 Apr 2001 10:05:57 +0100
From:           	Laurent Rouvet <laurent@roovay.com>
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



AITOULHA Alain wrote:
> 
> 
> 
> Rodolphe Godreul a écrit :
> 
> >  un new avec du code qui suit, comme si Class était implémenté en
> > même temps ...
> > Alain ca permet de surcharger une (des) methode(s) d une classe. c est
> > aussi de cette facon que tu va creer des inner-classen faisant un new
> > sur une interface et en implementant les methodes de cette interface.
> >
> 
> Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
> exemple, j'ai pas l'impression d'être dans en surcharge
> (setSelectionModel() n'étant pas une méthode de
> DefaultTreeSelectionModel) ni en inner-class (DefaultTreeSelectionModel
> n'est pas une interface) ... Alain.

Oui, tu cree une class inner-anonymous qui implements une interface
TotoAble.
Comme elle est anonymous tu n'as pas d'ident. sur le type (nom de la
class).

A+


-- 
Laurent
http://roovay.com/laurent/contact.html

     

Date sent:      	Mon, 09 Apr 2001 10:18:09 +0100
From:           	Laurent Rouvet <laurent@roovay.com>
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr

Regard la doc de Sun ou le tutorial au sujet de inner-*anonymous*.
Je ne suis pas sure de comprends ta question...
mais cela devrait t'aider...  ;-)



> Rodolphe Godreul wrote:
> 
> Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
> exemple, j'ai pas l'impression d'être dans en surcharge
> (setSelectionModel() n'étant pas une méthode de
> DefaultTreeSelectionModel) ni en inner-class (DefaultTreeSelectionModel
> n'est pas une interface) ... Alain.
> 
>         tree.setSelectionModel(new DefaultTreeSelectionModel() {
>             // Extend the implementation of the constructor, as if: /*
>             public this() */ { setSelectionModel(listSelectionModel);
>             }
>         });

-- 
Laurent
http://roovay.com/laurent/contact.html

     

Date sent:      	Mon, 09 Apr 2001 11:24:24 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



Laurent Rouvet a écrit :

> Regard la doc de Sun ou le tutorial au sujet de inner-*anonymous*.

Merci pour vos réponses. Je vais effectivement suivre ton conseil Laurent
car je ne vois toujours pas le lien entre le commentaire de Sun (Extend
..) et mis en avant par Rodolphe et l'implémentation. Alain.


>
> Je ne suis pas sure de comprends ta question...
> mais cela devrait t'aider...  ;-)
>
> > Rodolphe Godreul wrote:
> >
> > Merci, c'est le concept inner-class qui me manque. Mais du coup dans
> > mon exemple, j'ai pas l'impression d'être dans en surcharge
> > (setSelectionModel() n'étant pas une méthode de
> > DefaultTreeSelectionModel) ni en inner-class
> > (DefaultTreeSelectionModel n'est pas une interface) ... Alain.
> >
> >         tree.setSelectionModel(new DefaultTreeSelectionModel() {
> >             // Extend the implementation of the constructor, as if: /*
> >             public this() */ { setSelectionModel(listSelectionModel);
> >             }
> >         });
>
> --
> Laurent
> http://roovay.com/laurent/contact.html

     

Date sent:      	Mon, 09 Apr 2001 11:25:08 +0200
From:           	Jean-Baptiste BRIAUD <jean-baptiste.briaud@solsoft.fr>
Organization:   	SolSoft
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr

Juste une toute petite question de vocabulaire, 
ce n'est pas une inner-classe, c'est une classe anonyme.
Une inner-classe ce serait plutot ca :

public class Machin {
 protected class Truc {
 }
}



Truc est une inner-classe.

AITOULHA Alain wrote:
> 
> 
> 
> Rodolphe Godreul a écrit :
> 
> >  un new avec du code qui suit, comme si Class était implémenté en
> > même temps ...
> > Alain ca permet de surcharger une (des) methode(s) d une classe. c est
> > aussi de cette facon que tu va creer des inner-classen faisant un new
> > sur une interface et en implementant les methodes de cette interface.
> >
> 
> Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
> exemple, j'ai pas l'impression d'être dans en surcharge
> (setSelectionModel() n'étant pas une méthode de
> DefaultTreeSelectionModel) ni en inner-class (DefaultTreeSelectionModel
> n'est pas une interface) ... Alain.
> 

-- 
_______________________________________________________
Jean-Baptiste BRIAUD                    Solsoft
  software engineer              http://www.solsoft.fr

Solsoft SA  130 rue Victor Hugo  92300 Levallois-Perret
    "Policy Management for eBusiness Security"

     

Date sent:      	Mon, 09 Apr 2001 11:36:34 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



Jean-Baptiste BRIAUD a écrit :

> Juste une toute petite question de vocabulaire,
> ce n'est pas une inner-classe, c'est une classe anonyme.
> Une inner-classe ce serait plutot ca :
>
> public class Machin {
>         protected class Truc {
>         }
> }
>
> Truc est une inner-classe.

Ben non Jean-Baptiste en regardant la première doc
http://www.scit.wlv.ac.uk/~cm1914/cp2027/lecture7/sld012.htm que me donne
google. Alain


>
>
> AITOULHA Alain wrote:
> >
> >
> >
> > Rodolphe Godreul a écrit :
> >
> > >  un new avec du code qui suit, comme si Class était implémenté en
> > > même temps ...
> > > Alain ca permet de surcharger une (des) methode(s) d une classe. c
> > > est aussi de cette facon que tu va creer des inner-classen faisant
> > > un new sur une interface et en implementant les methodes de cette
> > > interface.
> > >
> >
> > Merci, c'est le concept inner-class qui me manque. Mais du coup dans
> > mon exemple, j'ai pas l'impression d'être dans en surcharge
> > (setSelectionModel() n'étant pas une méthode de
> > DefaultTreeSelectionModel) ni en inner-class
> > (DefaultTreeSelectionModel n'est pas une interface) ... Alain.
> >
>
> --
> _______________________________________________________
> Jean-Baptiste BRIAUD                    Solsoft
>   software engineer              http://www.solsoft.fr
>
> Solsoft SA  130 rue Victor Hugo  92300 Levallois-Perret
>     "Policy Management for eBusiness Security"

     

Date sent:      	Mon, 09 Apr 2001 11:43:47 +0200
From:           	Jean-Baptiste BRIAUD <jean-baptiste.briaud@solsoft.fr>
Organization:   	SolSoft
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr

Sans vouloir chipoter, il se trouve qu'une classe anonyme
ne peut se définir qu'au sein d'une autre classe,
donc le terme inner-anonymous-class est un pléonasme.



AITOULHA Alain wrote:
> 
> Jean-Baptiste BRIAUD a écrit :
> 
> > Juste une toute petite question de vocabulaire,
> > ce n'est pas une inner-classe, c'est une classe anonyme.
> > Une inner-classe ce serait plutot ca :
> >
> > public class Machin {
> >         protected class Truc {
> >         }
> > }
> >
> > Truc est une inner-classe.
> 
> Ben non Jean-Baptiste en regardant la première doc
> http://www.scit.wlv.ac.uk/~cm1914/cp2027/lecture7/sld012.htm que me
> donne google. Alain
> 
[SNIP]
-- 
_______________________________________________________
Jean-Baptiste BRIAUD                    Solsoft
  software engineer              http://www.solsoft.fr

Solsoft SA  130 rue Victor Hugo  92300 Levallois-Perret
    "Policy Management for eBusiness Security"

     

Date sent:      	Mon, 09 Apr 2001 11:48:26 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



Jean-Baptiste BRIAUD a écrit :

> Sans vouloir chipoter, il se trouve qu'une classe anonyme
> ne peut se définir qu'au sein d'une autre classe,
> donc le terme inner-anonymous-class est un pléonasme.

Oui.
Alain

>
>
> AITOULHA Alain wrote:
> >
> > Jean-Baptiste BRIAUD a écrit :
> >
> > > Juste une toute petite question de vocabulaire,
> > > ce n'est pas une inner-classe, c'est une classe anonyme.
> > > Une inner-classe ce serait plutot ca :
> > >
> > > public class Machin {
> > >         protected class Truc {
> > >         }
> > > }
> > >
> > > Truc est une inner-classe.
> >
> > Ben non Jean-Baptiste en regardant la première doc
> > http://www.scit.wlv.ac.uk/~cm1914/cp2027/lecture7/sld012.htm que me
> > donne google. Alain
> >
> [SNIP]
> --
> _______________________________________________________
> Jean-Baptiste BRIAUD                    Solsoft
>   software engineer              http://www.solsoft.fr
>
> Solsoft SA  130 rue Victor Hugo  92300 Levallois-Perret
>     "Policy Management for eBusiness Security"

     

Date sent:      	Mon, 09 Apr 2001 12:00:21 +0200
From:           	AITOULHA Alain <Alain.Aitoulha@answare.fr>
Organization:   	Alcatel TITN Answare
To:             	java@u-strasbg.fr, rodolphe@godreul.com
Subject:        	Re: Q implémentation
Send reply to:  	java@u-strasbg.fr



Rodolphe Godreul a écrit :

>  Merci, c'est le concept inner-class qui me manque. Mais du coup dans
> mon exemple, j'ai pas l'impression d'être dans en surcharge
> (setSelectionModel() n'étant pas une méthode de
> DefaultTreeSelectionModel) ni en inner-class
> (DefaultTreeSelectionModel n'est pas une interface) ...
> Alain.
>         tree.setSelectionModel(new DefaultTreeSelectionModel() {
>             // Extend the implementation of the constructor, as if: /*
>             public this() */ { setSelectionModel(listSelectionModel);
>             }
>         });

Bon je crois (j'espère ...) avoir compris Rodolphe, merci de m'avoir
tiré l'oreille. setSelectionModel(listSelectionModel) étend le
constructeur de DefaultTreeSelectionModel mais ce qui est troublant
c'est que setSelectionModel est une méthode de JTable mère héritée,
appelée avec l'attribut protected listSelectionModel de
DefaultTreeSelectionModel. Ainsi tree & table partagent en final la même
row selection model. Alain.


     

Send reply to:  	<godreul1@bst.bsf.alcatel.fr>
From:           	"Rodolphe Godreul" <rodolphe@godreul.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: Q implémentation
Date sent:      	Mon, 9 Apr 2001 13:16:09 +0200

Bon je crois (j'espère ...) avoir compris Rodolphe, merci de m'avoir tiré
l'oreille. setSelectionModel(listSelectionModel) étend le constructeur de
DefaultTreeSelectionModel mais ce qui est troublant c'est que
setSelectionModel est une méthode de JTable mère héritée, appelée avec
l'attribut protected listSelectionModel de DefaultTreeSelectionModel.
Ainsi tree & table partagent en final la même row selection model.


Les inner-classes ont acces a tous les methodes et attributs de l
outer-class
a+

     

From:           	"Thibaut Fagart" <tfagart@soleri.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: Q implémentation
Date sent:      	Mon, 9 Apr 2001 18:00:31 +0200
Send reply to:  	java@u-strasbg.fr

Je penses avoir une réponse qui satisfera tout le monde :-)

Tout d’abord, et pour Jean Baptiste (que je salue au passage ;-)), inner
anonymous class me parait effectivement un pleonasme mais pas anonymous
inner class. Le deuxieme type est souvent utilisé pour implementer
directement des interfaces (style listener) mais peut l’etre aussi en
etendant des classes.

Lors de la définition d’une classe anonyme il n’est pas autorisé de
définir de constructeur. Par contre on peut définir un initialiseur et
c’est ce qui est fait dans l’exemple. Ces méthodes spéciales (qui existent
aussi pour les classes) n’ont pas de nom. On peut donc se sortit de
certains problemes d’ initialisation en utilisant ce petit truc , ce qui
est fait ici.

-----Message d'origine-----
De : AITOULHA Alain [mailto:Alain.Aitoulha@answare.fr]
Envoyé : lundi 9 avril 2001 12:00
À : java@u-strasbg.fr; rodolphe@godreul.com
Objet : Re: Q implémentation


Rodolphe Godreul a écrit :
 Merci, c'est le concept inner-class qui me manque. Mais du coup dans mon
exemple, j'ai pas l'impression d'être dans en surcharge
(setSelectionModel() n'étant pas une méthode de DefaultTreeSelectionModel)
ni en inner-class (DefaultTreeSelectionModel n'est pas une interface) ...
Alain.
        tree.setSelectionModel(new DefaultTreeSelectionModel() {
            // Extend the implementation of the constructor, as if:
            /* public this() */ {
            setSelectionModel(listSelectionModel);
            }
        });
Bon je crois (j'espère ...) avoir compris Rodolphe, merci de m'avoir tiré
l'oreille. setSelectionModel(listSelectionModel) étend le constructeur de
DefaultTreeSelectionModel mais ce qui est troublant c'est que
setSelectionModel est une méthode de JTable mère héritée, appelée avec
l'attribut protected listSelectionModel de DefaultTreeSelectionModel.
Ainsi tree & table partagent en final la même row selection model. Alain.



C'est fini ! Retour à l'accueil de la pseudo-archive