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

SWT/JFace Java Discussion :

[SWT] Ecrire un texte long dans un label


Sujet :

SWT/JFace Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut [SWT] Ecrire un texte long dans un label
    Bonjour je voudrais ecrire dans un label (SWT) le contenu d'un fichier résultat.
    Le probleme c'est que ce fichier peut etre relativement long (380 000 caractères dans mon cas). et le label n'affiche plus rien alors que mon code fonctionne dans le cas d'un fichier court (45 000 caractères). Je n'ai rien vu dans la javadoc concernant une eventuelle limite de taille; est ce que vous avez déja rencontré ce problème et/ou trouvé une une solution

    Merci d'avance

  2. #2
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    Est-ce que le problème se présente encore si tu remplace ton JLabel par un JTextArea?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    ca n'est pas un JLabel mais un Label (SWT)
    De plus ça m'arrange que le texte ne soit ni selectionable ni modifiable
    mais je vais qd meme tester avec la class Text

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Tweety, tu arrives à faire un retour à la ligne automatique selon la largeur de ton Label ?

    Si oui, j'aimerais bien la solution

    Sinon, je pense que c'est dû à la place que cela prend sur ton écran. C'est proportionnelement HYPER GRAND !!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je n'ai pas besoin de retour à la ligne automatique car mon texte comprend ses propres retour chariot. A ta place je gererai juste le moment opportun pour en mettre un. pour ce qui est de mon problème mon label est intégré dans un scrolledComposite dont la taille est maintenu a jours. donc je ne crois pas que ca vienne de l'affichage trop grand.
    Mais merci qd meme

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    En explorant un peu plus ton hypothèse BiMouXeTTe y a effectivement un problème de taille
    D'après mes tests la taille d'un label ne pourrait exceder 32767*32767 pixel
    ce qui ne me permet pas d'aficher le contenue tout mon fichier
    De plus il semble que si tu lui en demande vraiment trop il n'affiche plus rien du tout
    voila mon code de test
    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
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.ScrolledComposite;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.layout.GridData;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.widgets.Shell;
     
    /**
     * @author Timothée
     *
     */
    public class LabelLongFile {
     
    	public static void main(String args[] )
    	{
    		Display display=new Display();
    		Shell shell=new Shell(display);
    		shell.setLayout(new GridLayout());
    		ScrolledComposite sc=new ScrolledComposite(shell,SWT.H_SCROLL|SWT.V_SCROLL);
    		sc.setLayoutData(new GridData(GridData.FILL_BOTH));
    		sc.setExpandHorizontal(true);
    		sc.setExpandVertical(true);
    		Label label=new Label(sc,SWT.NONE);
    		label.setBackground(new Color(display,255, 255, 255));
    		sc.setContent(label);
    		File result =new File("C:/blastall.out");
    		StringBuffer sb=new StringBuffer(label.getText());
    		try {
    			BufferedReader br =new BufferedReader(new FileReader(result));
    			String line="";
    			while((line=br.readLine())!=null)sb.append(line+"\n");
    		}catch (IOException ex)
    		{
    			ex.printStackTrace();
    		}
    		String s=new String(sb.substring(0,200000));
    		label.setText(s);
    		sc.setMinSize(label.computeSize(SWT.DEFAULT,SWT.DEFAULT));
    		label.setSize(label.computeSize(SWT.DEFAULT,SWT.DEFAULT));
    		Point p1=label.computeSize(SWT.DEFAULT,SWT.DEFAULT);
    		Point p2=label.getSize();
    		System.out.println(p1.x+" - "+p1.y);
    		System.out.println(p2.x+" - "+p2.y);
    	    shell.open();
    	    while (!shell.isDisposed()) {
    	      if (!display.readAndDispatch())
    	        display.sleep();
    	    }
    	    display.dispose();
    	}
    }

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Tu peux diviser en plusieurs Label, crée un nouveau Label toutes les X lignes par exemple.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je sens que c'est ce que je vais faire mais c'est bcp moins elegant

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Pour ta question de tout à l'heure BiMouXeTTe sur le retour à la ligne automatique il faut créer le Label avec le style WARP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label label = new Label(parent,SWT.WARP);
    Pour ma part je n'ai pas trouver de solution tel que je l'imaginais
    mais bon a force de recherche je me suis rendu compte que la class Text a contrairement a la class Label des scrollbar en interne ce qui fait qu'on n'a pas besoin de l'aggrandir à l'exces

    Merci pour vos reponses

  10. #10
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Oups, il me semblait l'avoir testé.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    En SWT, la classe StyledText est aussi très intéressante pour afficher un text. Cela permet aussi la mise en forme.
    voir le tutoriel ici : StyledText

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Précision
    hum...
    Juste une petite précision, c pas SWT.WARP mais SWT.WRAP pour créer un texte ou un label avec retour automatique à la ligne.

Discussions similaires

  1. Text long dans jTextArea
    Par minos23 dans le forum Composants
    Réponses: 1
    Dernier message: 17/04/2009, 09h31
  2. [SWT] Centrer verticalement le texte dans un label avec SWT
    Par Poulpynette dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 14/03/2008, 11h12
  3. Formats du texte différents dans un label
    Par sunvialley dans le forum IHM
    Réponses: 2
    Dernier message: 28/06/2006, 13h34
  4. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23
  5. Faire defiler Texte dans un label
    Par Techsan dans le forum Composants VCL
    Réponses: 5
    Dernier message: 08/06/2003, 23h29

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