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 :

Retour à la ligne dans un JTextPane


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut Retour à la ligne dans un JTextPane
    Bonjour,

    Cela fait 2 semaines que je me prend la tete a essayer d'avoir un retour automatique en fin de ligne dans un JTextPane, et sans succes.

    J'utilise NetBeans, et j'ai pose un JTextPane avec (text/rtf) sur ma form. Le jTextPane est bien dans un jScrollPane. Quand je tape un text qui depasse la taille du jTextPane, une scrollbar horizontale apparait, ce qui est normal. Quand je supprime la scrollbar horizontale dans mon jScrollPane, et que je retourne taper du texte, la scrollbar n'apparait plus, mais le texte continue en dehors de la fenetre sans faire de retour a la ligne, et je peux deplacer mon curseur apres la fin de la fenetre, et le texte se decalera vers la gauche, comme si la taille du jTextPane est plus grand que le scrollPane.
    Ce que j'ai essaye, c'est de mettre le layout de ma form a null, et de gerer la taille et position des composants manuellements. Pour le jScrollPane j'ai mis la meme taille pour : setSize, setMaximum..., setMinium..., setPreferred..., et idem pour le JTextPane. Mais cela ne change rien. Toujours pas de retour a la ligne.

    J'ai essaye de chercher sur google, et je n'ai rien trouve pour le retour a la ligne pour le JTextPane, ou alors la plupart dise que le retour a la ligne se fait automatiquement quand il n'y a pas de scrollBar horizontal. Mais pourquoi cela ne fonctionne pas chez moi.

    Est-ce que j'aurais manque quelque chose ?
    Est ce quelqu'un aurait la gentillesse d'essayer de m'aider avec ce probleme ? (avant que je me suicide )

    Merci
    Fred

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Ben en effet, un javax.swing.JTextPane doit renvoyer automatiquement le texte.
    Tu peux poster le code pour qu'on essaye de voir d'où ça peut provenir ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Voici quelques portions de mon code:

    Ici le constructeur de la fiche:
    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
     
    public Note(Config config, int dataIndex) {
            initComponents();
     
            this.getContentPane().setLayout(null);
     
            DropTargetListener myListener = new MyDropTargetListener();
            DropTarget dt = new DropTarget(this.jTextPane_notes, myListener);
     
            this.config=config;
            this.dataIndex=dataIndex;
            this.data = this.config.allNotes.dataList.get(dataIndex);
     
            this.m_kit = new RTFEditorKit();
            this.jTextPane_notes.setEditorKit(m_kit);
            this.jTextPane_notes.setEditorKitForContentType("text/rtf", this.m_kit);
     
            this.m_context = new StyleContext();
            this.m_doc = new DefaultStyledDocument(this.m_context);
            this.jTextPane_notes.setDocument(this.m_doc);
     
        }
    Ici la fonction qui me permet de redessiner sur ma fiche tous les composants qui se trouve dans mon JPanel principal apres un changement de la taille de ma fiche

    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
     
    private void refreshComponents() {
            //Ici je recupere la taille de ma fiche
            Dimension dim = new Dimension();
            dim = this.getSize();
     
            //Je redimensionne mon JPanel principal qui contient dans l'ordre: 
            //un jpanel en haut, un jscrollpane au milieu, et un autre jpanel en bas
            this.jPanel_main.setSize(dim);
            this.jPanel_main.setLocation(0, 0);
            this.jPanel_main.setMaximumSize(dim);
            this.jPanel_main.setMinimumSize(dim);
            this.jPanel_main.setPreferredSize(dim);
     
            //Je redimmensionne les composants a l'interieur de mon jpanel principal
            //header
            this.jPanel_header.setSize(dim.width-2, 25);
            this.jPanel_header.setLocation(1,1);
     
            //footer
            this.jPanel_footer.setSize(dim.width-2, 23);
            int footerTop = dim.height - this.jPanel_footer.getSize().height;
            this.jPanel_footer.setLocation(1, footerTop-1);
     
            //ScrollPane et JTextPane
            this.jScrollPane2.setVisible(true);
            this.jTextPane_notes.setVisible(true);
     
            int marge = 1;
            this.jScrollPane2.setLocation(marge, this.jPanel_header.getSize().height + 1);
            this.jScrollPane2.setSize(dim.width-marge-1, footerTop - this.jPanel_header.getSize().height - 2);
            this.jScrollPane2.setMaximumSize(dim);
            this.jScrollPane2.setMinimumSize(dim);
            this.jScrollPane2.setPreferredSize(dim);
     
            this.jTextPane_notes.setLocation(0,0);
            this.jTextPane_notes.setSize(dim);
            this.jTextPane_notes.setMaximumSize(dim);
            this.jTextPane_notes.setMinimumSize(dim);
            this.jTextPane_notes.setPreferredSize(dim);
     
        }

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Ta question était bien un problème de retour à la ligne automatique et scrollbar ?

    J'ai fais le test suivant :
    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
     
    import javax.swing.JFrame;
    import javax.swing.text.rtf.RTFEditorKit;
     
     
    public class TestKit extends JFrame {
     
    public TestKit() {
            javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
            javax.swing.JTextPane jTextPane1 = new javax.swing.JTextPane();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(null);
     
            RTFEditorKit kit = new RTFEditorKit();
            jTextPane1.setContentType("text/rtf");
            jTextPane1.setEditorKit(kit);
            jScrollPane1.setViewportView(jTextPane1);
     
            getContentPane().add(jScrollPane1);
            jScrollPane1.setBounds(89, 76, 123, 87);    
    }
     
     
        public static void main(String[] args) {
            TestKit test = new TestKit();
            test.setSize(500, 500);
            test.setLocationRelativeTo(null);        
            test.setVisible(true);
        }
     
    }
    On a bien un retour à la ligne automatique et un scrollbar avec du texte RTF
    (j'ai fait un copié collé d'un texte en gras de WordPad et je récupère bien la police.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    J'ai essaye ton exemple, et effectivement ca fonctionne.
    J'ai utilise setBounds dans mon code pour mon panel principal et JScrollPane.
    Ca a fait la meme chose, mais je viens de m'apercevoir que cela venait du texte qui etait deja enregistre dans mon fichier.
    Avec une nouvelle fenetre et un nouveau texte ca fonctionne. Je pense que mon JTextPane a du enregistrer le texte comme si il y avait la scrollbar, du coup quand je l'ouvre, il s'affiche le texte sur la meme ligne.

    Merci pour ton aide

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

Discussions similaires

  1. Retour à la ligne dans un JTextPane
    Par id456 dans le forum Composants
    Réponses: 3
    Dernier message: 16/04/2013, 03h40
  2. [C#] Retour à la ligne dans un textbox
    Par Oberown dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/07/2005, 09h46
  3. [C#] Retour à la ligne dans un TextBox MultLine
    Par Oberown dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/07/2005, 11h39
  4. retoure à la ligne dans un fichier
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2004, 15h05
  5. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58

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