> ....Il suffit de te cr�er un panneau qui h�rite de JPanel
> et non pas de JComponent...

Je persiste et signe. D�river de JComponent suffit dans les cas simples :

import javax.swing.*;
import java.awt.*;

public class MyComp extends JComponent {

        JLabel          myLabel = new JLabel("Texte : ");
        JTextField      myTextField     = new JTextField(8);

        public MyComp() {
                this.setLayout(new BorderLayout());
                this.add(myLabel, BorderLayout.WEST);
                this.add(myTextField, BorderLayout.CENTER);
        }
}

A+

--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l  [EMAIL PROTECTED] 
 

-----Message d'origine-----
De : Herve AGNOUX [mailto:[EMAIL PROTECTED]]
Envoy� : lundi 10 f�vrier 2003 13:58
� : [EMAIL PROTECTED]
Objet : Re: Creation de composant


Le Lundi 10 F�vrier 2003 13:25, Yannick Emeriaud a �crit :

> Bonjour,
>
> Je souhaiterais cr�� un composant graphique personnalis�.
>
> Par exemple un JTextField suivi d'une image sous forme de  JLabel.
> J'aimerais que lorsque ce composant s'affiche, on ait toujours le
> JTextfield puis l'image accoll�e (ceci ind�pendamment du layout). Comme
> si ce composant n'�tait qu'un.
> Je ne vois pas trop comment faire.
>

Il suffit de te cr�er un panneau qui h�rite de JPanel - et non pas de 
JComponent - dans lequel tu d�finis toi m�me le layout. En red�finissant la 
m�thode setLayout, tu peux empecher l'ext�rieur de modifier le layout, si tu 
veux.

> Ma premi�re id�e est de cr�er une classe comme ceci :
> -----------------------------------------
> class MonComposant extends JComponent{

Ici JPanel � la place de JComponent.


>     private JTextField nom;
>    private JLabel iconeNom=new JLabel("une_image");
>
>    // ... constructeurs ...
>

D�fini une m�thode "initialise" (par exemple) dans laquelle tu positionnes tes 
composants selon la disposition que tu voudras.

>     public void paint(Graphics g){
>          nom.paint(g);
>          iconeNom.paint(g);
>     }

Supprime cette horreur !

>
> Mais les deux "paint" ne me garantissent pas l'"union" des deux
> composants.
>
> Comment pourrais-je faire ?
>

Pour ton composant utilise un BoxLayout, un GridLayout ou un BorderLayout de 
fa�on tout � fait normale.


-- 
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com


Répondre à