IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Probleme pour l'affichage d'un JtextArea


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut Probleme pour l'affichage d'un JtextArea
    Bonsoir,

    J'ai créé une classe ZoneTexte pour mon JTextArea que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import javax.swing.*;
     
    public class ZoneTexte extends JTextArea{
     
    	public ZoneTexte(String texte,Container c,int x, int y, int ligne, int colonne){
    		super(texte,ligne,colonne);
    		setLocation(x,y);
    		c.add(this);
    	}
    }
    Que j'ajoute a une panel de facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZoneTexte txtAreaDesc = new ZoneTexte("Ici votre description",this,(int)(lf),y8,3,25);
    Le Panel est ensuite accroché à la Frame. J'ai beaucoup d'autres éléments sur mon probleme et tout s'affiche correctement sauf le TextArea.
    J'ai essayé des
    .setVisible(true)
    .validate()
    .repaint()

    Mais rien n'y fait... je ne comprends pas bien la

    Je dois redefinir la methode paint() ?
    Pourriez vous m'aider s'il vous plait?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Deux choses que tu peux essayer:

    - un setPreferredSize()
    - la méthode pack() du Container pour assurer l'agencement de tes composants

    Sinon, regarde peut-être du côté de ton layout... le résultat est généralement meilleurs qu'un placement "manuel" des composants avec un setPosition()

  3. #3
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    Pour ce qui est du layout... il est a nul j'ai tout placé avec en utlisant des coordonnées dans le panel.

    Pour les deux autres méthodes je regarde ca tout de suite

    Merci

    EDIT :

    J'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setPreferredSize(new Dimension(400, 1000));
    dans ma classe ZoneTexte.... mais toujours pas de JtextArea d'afficher.

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Peux-tu mettre le code de ta JFrame ou tu mets t'es TextArea et autre dessus. Comme ca on pourra tester et te resoudre ca d'autant plus vite!!

  5. #5
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    Voici la classe qui gère ma JTextArea : ZoneTexte.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.awt.*;
    import javax.swing.*;
     
    public class ZoneTexte extends JTextArea{
     
    	public ZoneTexte(String texte,Container c,int x, int y, int ligne, int colonne){
    		super(texte,ligne,colonne);
    		setLocation(x,y);
    		//setSize(colonne,ligne);
    		//setPreferredSize(new Dimension(400, 1000));
    		setLineWrap(true);
    		setWrapStyleWord(true);
    		c.add(this);
    	}
    }
    Ici la classe qui gère mon panel sur lequel j'ajoute ma zone de texte : AjoutAnnImmo.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import java.awt.*;
    import javax.swing.*;
     
    public class AjoutAnnImmo extends Panel{
     
    	//JTextArea txtAreaDesc;
    	ZoneTexte txtAreaDesc;
     
    	public AjoutAnnImmo(int longueur, int hauteur){
     
    	    /*Si je mets cette ligne en commentaire, je peux voir le texte ecri dans le TextArea*/
    	        setLayout(null);
     
    		int lf, hf;
    		lf = longueur;
    		hf=hauteur;
     
    		int y1, y2, y3, y4, y5, y6, y7, y8, y9, h, ll, lt;
    		y1 = (int)(0.05*hf);
    		h=(int)(0.03*hf);
    		ll = (int)(0.19*lf);
    		lt = (int)(0.25*lf);
    		y2 = (int)(0.15*hf);
    		y3 = (int)(0.22*hf);
    		y4 = (int)(0.29*hf);
    		y5 = (int)(0.36*hf);
    		y6 = (int)(0.43*hf);
    		y7 = (int)(0.50*hf);
    		y8 = (int)(0.57*hf);
    		y9 = (int)(0.64*hf);
     
     
    		txtAreaDesc = new ZoneTexte("Ici votre description",this,(int)(lf),y8,3,25);
     
    		JTextArea textArea = new JTextArea();
    		textArea.setPreferredSize(new Dimension(400, 1000));
     
    		this.add(textArea);
    	}
    }
    Ici ma frame principale sur laquelle j'ajoute le panel précédent : FPrincipale.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class FPrincipale extends Frame {
     
    	int hauteur, longueur;
     
    	public FPrincipale(String titre){
    	super(titre);
     
     
     
    	//Appel de la procedure pour positionner ma feuille
    	place();
     
    	hauteur = getWidth();
    	longueur = getHeight();
     
            AjoutAnnImmo aj = new AjoutAnnImmo(this.getLongueur(),this.getHauteur());
     
        	this.add(aj);
    	}
     
     
    	public void place()
     	{
    	Toolkit tk;
    	Dimension d;
    	int ox,oy,hf, lf;  
    	double he, le;
    	//creation d'un objet tk pour pouvoir parametrer et dimensionner la fenetre
    	tk = Toolkit.getDefaultToolkit();
    	//d contient les dimensions de l ecran
    	d = tk.getScreenSize();
     
    	//Recuperation de la taille de l ecran
    	he=(double)(d.getHeight());
    	le=(double)(d.getWidth());
     
    	//Ma fenetre prend la moitie d l ecran
    	hf = (int)(he/(1.25));
    	lf = (int)(le/(1.25));
     
    	//Je la place a 1/4 du coin gauche
    	ox = (int)(le/400);
    	oy = (int)(he/400);
     
    	//Je fixe les coordonnees du coin haut gauche du cadre en pixels
    	setLocation(ox,oy);
     
    	//Je fixe les dimensions du cadre en pixels
    	setSize(lf, hf);
    	}
     
    	public int getHauteur(){
    		return (int)(hauteur/(1.25));
    	}
     
    	public int getLongueur(){
    		return (int)(longueur/(1.25));
    	}
     
    }
    Et la ma classe test : TestFPrincipale.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class TestFPrincipale{
     
        public static void main(String[]args){
     
    	FPrincipale m;
    	m=new FPrincipale("Ma fenetre");
    	m.setVisible(true);
     
        }
     
    }
    Donc la Zone de texte ne s'affiche pas... mais par contre quand je supprime le "setLayout(null)" je visualise qand meme le texte contenu par defaut dans la zone de texte... je ne comprends pas trop pouquoi.
    De plus je voudrais pouvoir rester avec une Layout null... et afficher la zone de texte...
    Si vous avez une petite idée ou une piste... je suis preneur

    Encore merci de votre aide

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 80
    Points
    80
    Par défaut
    c'est ton c.add(this) dans le constructeur de ton ZoneTexte qui ne va pas.

    c'est dans le constructeur de AjoutAnnImo que tu dois le mettre, par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.add(this.textAreaDesc);

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par ikeaboy
    Pour ce qui est du layout... il est a nul j'ai tout placé avec en utlisant des coordonnées dans le panel.
    Si tu utilises un Layout null tu dois alors spécifier la taille de ton JTextArea, car il doit surement avoir une taille de (0,0) ce qui le rend difficilement visible

    Mais le mieux serait d'utiliser un Layout adapté à tes besoins plutôt que le Layout null...

    a++

  8. #8
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    Citation Envoyé par Epistocles
    c'est ton c.add(this) dans le constructeur de ton ZoneTexte qui ne va pas.

    c'est dans le constructeur de AjoutAnnImo que tu dois le mettre, par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.add(this.textAreaDesc);
    Tu avais raison! mais il y a un truc vraiment étrange c'est que maintenant je ne vois pas les contours de la TextArea... par contre le je vois le texte que j'y ai mis par defaut




    Citation Envoyé par adiGuba
    Salut,



    Si tu utilises un Layout null tu dois alors spécifier la taille de ton JTextArea, car il doit surement avoir une taille de (0,0) ce qui le rend difficilement visible

    Mais le mieux serait d'utiliser un Layout adapté à tes besoins plutôt que le Layout null...

    a++
    Je comprends bien ce que tu veux dire... mais je pensais l'avoir fait en appelant le constructeur des JTextArea de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JTextArea(String text, int rows, int columns)
    grace au constructeur de ZoneTexte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    super(texte,ligne,colonne);
    J'ai essayé un setSize mais rien n'y fait Je me trompe surement pour donner une taille au TextArea

  9. #9
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    Donc pour être plus précis... je visualise le texte que j'ai mis par defaut dans la JTextArea, il est parfaitement modifiable mais on ne voit pas les contours de la JTextArea.

    Apres avoir testé avec des fonds de couleur pour mieux voir... en fait la TextArea apparait au fur et à mesure que j'ecris de dans jusqu'à arriver à la taille normale qu'elle devrait avoir.

    Donc il y a effectivement un probleme d'application de la taille à la création de la JTextArea.

    De plus si je minimise la fenêtre et la remet ensuite en grand... alors qu'il n'y a rien dans la JTextArea alors celle ci se limite à une case toute petite de la taille du cursor qui clignote pour écrire.

    EDIT : Probleme reglé, en fait il ne faut pas toucher à la méthode paint(Graphics g) ou alors faire des repaint

    Merci pour votre aide en tout cas! ca m'a bien aidé

  10. #10
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    En fait je vois ma JTextArea parce que j'ai appliqué une couleur de fond, sinon si je laissais le fond blanc je ne verrai que le texte qui s'y trouve par défaut.
    On ne visualise donc pas les contours normalement comme sur une TextField par exemple... un grand mystere tout ca

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Si tu redéfini paint() ou une autre des méthodes de dessin c'est peut-être normal... et il faudrait voir ton code

    D'ailleurs pour un composant Swing il ne faudrait pas redéfinir paint() mais paintComponent()...

    a++

  12. #12
    Membre régulier Avatar de ikeaboy
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 109
    Points
    109
    Par défaut
    Non mais je n'ai pas du tout redefini paint finalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] probleme pour l'affichage
    Par rabah88 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/03/2012, 17h17
  2. Réponses: 2
    Dernier message: 01/11/2009, 19h56
  3. probleme pour l'affichage du Fichier
    Par mathiew dans le forum Débuter
    Réponses: 2
    Dernier message: 30/04/2009, 19h56
  4. Probleme pour l'affichage d'un graphe + question
    Par gbouchat dans le forum ASP
    Réponses: 7
    Dernier message: 23/07/2007, 19h35
  5. Probleme pour positionner une JTextArea
    Par L4BiN dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/08/2006, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo