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

Composants Java Discussion :

jEditorPane: Html qui passe tout seul a la ligne?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Par défaut jEditorPane: Html qui passe tout seul a la ligne?
    Bonjour,

    Decidement, ce jEditorPane me rends fou...j'y ai passé des jours et des jours et ca ne veut toujours pas marcher.
    Je m'explique.Aprés avoir resolu quelques problemes,je pensais avoir terminé,mais non!
    Ca marche bien du moment que la String a rajouter n'est pas trop longue.A partir d'une certaine longueur,il passe tout seul a la ligne a partir de la derniere balise html.
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test="<br>salut1sa<b>lut2sal</b>ut3sa<b>lut4s</b>a<u>l</u>ut5salut6salut<b>7sal</b>ut8sal<i>ut9salut10salut11sa</i>lut12salut13salut14salut15salut16salut17";
    Aucun probleme,tout est sur une ligne avec le formatage en fonction des balises.

    par contre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test="<br>salut1sa<b>lut2sal</b>ut3sa<b>lut4s</b>a<u>l</u>ut5salut6salut<b>7sal</b>ut8sal<i>ut9salut10salut11sa</i>lut12salut13salut14salut15salut16salut17salut18";
    catastrophe...
    sur la 1ere ligne on a jusqu'a "salut11sa" (derniere balise html), et sur la seconde on a tout le reste.

    Je dois avouer que je comprends pas trop...

    Je mets un code rapide si vous voulez tester par vous meme:
    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
    65
     
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.html.*;
     
    public class Test extends JFrame
    {
                 private static JEditorPane jEditorPane1=new JEditorPane("text/html","<html><body>");
    	private static JScrollPane jScrollPane1=new JScrollPane();
     
                 public Test()
    	{
    		super();
    		initialise();
    		this.setVisible(true);
    	}
     
    	private void initialise()
    	{
    		contentPane = (JPanel)this.getContentPane();
    		jEditorPane1.setEditable(true);
    		jScrollPane1.setViewportView(jEditorPane1);
    		contentPane.setLayout(null);
    		addComponent(contentPane, jScrollPane1, 64,26,651,488);
    		this.setTitle("Test");
    		this.setLocation(new Point(279, 197));
    		this.setSize(new Dimension(869, 680));
                 }
     
    	private void addComponent(Container container,Component c,int x,int y,int width,int height)
    	{
    		c.setBounds(x,y,width,height);
    		container.add(c);
    	}
     
     
    public static void main(String[] args)
    	{
    		JFrame.setDefaultLookAndFeelDecorated(true);
    		JDialog.setDefaultLookAndFeelDecorated(true);
    		HTMLEditorKit kit = new HTMLEditorKit();
    		HTMLDocument doc = new HTMLDocument();
    		try
    		{
    			UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    		}
    		catch (Exception ex)
    		{
    			System.out.println(ex);
    		}
     
                              new Test();
    		jEditorPane1.setEditorKit(kit);
    		jEditorPane1.setDocument(doc);
     
                              try
    		{
     
                              kit.insertHTML(doc, doc.getLength(), "<br>texte ici", 0, 0, HTML.Tag.BR);
     
    		}catch (Exception ex)
    		{ex.printStackTrace();}
     
    	}
    }
    Si quelqu'un a une idée de la cause ou du remede.Merci

    Ps: Desolé pour l'indentation,probleme au copier/coller

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Ton code n'est pas compilable. Problème d'import entre autre.

    Caster une JFrame en JPanel me parait gonflé et bizarre.

    Sinon, si tu as une version testable de ton code, je regarderais plus loin.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Par défaut
    Voila,j'ai corrigé tout ca,rajouté les imports et surtout,il faut savoir que le tag HTML a utiliser au debut de chaque string (pour que ce soit pris en compte) est <br>

    Donc pour tester, ce sera "<br>blablabla".

    Ceci etant,je suis ouvert a toute modification. Le principal etant d'arriver a une version qui "marche" et puisse peut etre servir a d'autres qui seraient tentés par l'aventure

    Merci

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Qu'est ce que ça m'énerve. Je te dis que ton code n'est pas compilable, et tu me redonnes un code non compilable.
    En plus c'est mal codé.

    Voici une version corrigée. Compare bien les 2. Il y a des choses supprimées (car insensées) et des choses remplacées (mal dites). Je n'ai changé que l'interface graphique. Pas l'application en elle-même, ni ton choix de thème.

    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
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.html.*;
     
    public class Test extends JFrame
    {
        private static JEditorPane jEditorPane1=new JEditorPane("text/html","<html><body>");
        private static JScrollPane jScrollPane1=new JScrollPane(jEditorPane1);
        private JPanel toileDeFond=new JPanel();
     
        public Test()
        {
            super();
     
            jEditorPane1.setEditable(true);
     
            toileDeFond.setLayout(new BorderLayout());
            toileDeFond.add(jScrollPane1,BorderLayout.CENTER);
     
            this.setTitle("Test");
            this.setSize(869, 680);
            this.setLocationRelativeTo(null); // centré sur l'écran
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setContentPane(toileDeFond);
            this.setVisible(true);
        }
     
        public static void main(String[] args)
        {
            JFrame.setDefaultLookAndFeelDecorated(true);
            JDialog.setDefaultLookAndFeelDecorated(true);
            HTMLEditorKit kit = new HTMLEditorKit();
            HTMLDocument doc = new HTMLDocument();
            try
                {
                    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                }
            catch (Exception ex)
                {
                    System.out.println(ex);
                }
     
            Test test=new Test();
            jEditorPane1.setEditorKit(kit);
            jEditorPane1.setDocument(doc);
     
     
            String phrase="<br>salut1sa<b>lut2sal</b>ut3sa<b>lut4s</b>a<u>l</u>ut5salut6salut<b>7sal</b>ut8sal<i>ut9salut10salut11sa</i>lut12salut13salut14salut15salut16salut17salut18";
            try
                {
     
                    kit.insertHTML(doc, doc.getLength(), phrase, 0, 0, HTML.Tag.BR);
     
                }catch (Exception ex)
                    {ex.printStackTrace();}
     
        }
    }
    Pour ce qui est de ton problème, dans un premier temps, je n'ai pas compris. Tout marchait. Et j'ai diminué la taille de la fenêtre, et là j'ai compris.
    Ton problème est un problème de line wrapping. Malheureusment, le JEditorPane fait du line wrapping par défaut et on ne peut pas le changer simplement, comme dans un JTextArea ( JTextArea.setWrap(false); )
    Une solution technique est ici

    Bonne chance


    Sinon, est il indiscret de demander le but de l'application ?

Discussions similaires

  1. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  2. [C#, .net 2.0] Scrollbar qui scroll toute seule
    Par SesechXP dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/09/2006, 17h11
  3. pc portable qui reboot tout seul
    Par pepper18 dans le forum Windows XP
    Réponses: 23
    Dernier message: 24/06/2006, 14h51
  4. [MFC] un CDialog qui disparait tout seul.
    Par tut dans le forum MFC
    Réponses: 4
    Dernier message: 21/06/2006, 14h01
  5. Ip qui change toute seul , je veux stoper..?
    Par loobstyle dans le forum Windows XP
    Réponses: 2
    Dernier message: 19/06/2006, 08h25

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