Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut [TextArea]Ajouter le numero de ligne à gauche

    Bonjour,
    est-il possible d'ajouter les n° lignes à gauche de mon textArea, comme sur un editeur de texte.
    A la limite, je peux mettre un textArea fin juste à droite de mon textArea en ds lequel je mets juste des n°
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    |1|      |                                     |
    |2|      |                                     |
    |3|      |                                     |
    |4|      |                                     |
    |5|      |                                     |
    |.|      |                                     |
     
    txtArea1      textArea2

    Mais comment faire pour que le premier textArea defile avec le 2eme. Cad, lorsque l'utilisateur descend via les ascensseurs le textArea ds lequel il ecrit, je souhaite que le deuxieme textArea (celui avec les n°lignes) descende de la meme maniere, afin que les lignes suivent.

    MERCI POUR VOTRE AIDE

  2. #2
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Mhhh, personne ne voit une petite astuce pour ca?

    MERCI

  3. #3
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    personne n'a la moindre idée?

  4. #4
    Expert Confirmé
    Avatar de mavina
    Homme Profil pro Frédéric Mora
    Développeur Java
    Inscrit en
    octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric Mora
    Âge : 29
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2004
    Messages : 1 812
    Points : 2 524
    Points
    2 524

    Par défaut

    Je crois pas que ca soit possible, il faudrait pouvoir faire en sorte que le JScrollPane ai comme fils les 2 JEditorPane mais on peut pas ...

    Ca m'interesserai d'avoir une astuce pour ça
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  5. #5
    Invité régulier
    Inscrit en
    avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : avril 2006
    Messages : 8
    Points : 9
    Points
    9

    Par défaut

    Heu...

    Tu peux créer un JPanel dans lequel tu place tes deux JTextArea. Ensuite tu ajoute le JPanel en question a ton JScrollPane ...?

    Ca me parait bien barbar mais je ne vois que ça !

    Bon courage

    ps: ai-je bien compris la kestion?

  6. #6
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 762
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 762
    Points : 12 849
    Points
    12 849

    Par défaut

    Si c'est faisable en jouant un tant soit peu sur les borders (même pricipe qu'une TitledBorder mais avec des chiffres sur le cotté gauche

    Voire par là:http://www.esus.com/docs/GetQuestionPage.jsp?uid=1326
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Je suis assez content d'apprendre que ca existe ))

    J'ai été voir le lien, mais je comprends pas trop le systeme!!

    Les n°lignes se mettent dans me textArea???
    Si c'est le cas, c'est embettant car je recuprere ce qui est ecrit dans le textarea pour le traiter!!! Donc je vais devoir retirer les chiffres, ce qui est lourd!!! (surtout que l'utilisateur peut ecrire des chiffres, donc ...)

    Mais si, lorsqu'on recupere le textArea, les chiffres ne viennent pas avec, ca m'interresse!!!

    Puis-je avoir, pour ceux qui savent, une explication rapide concernant l'explication anglaise du lien?

    MERCI D'AVANCE!!

  8. #8
    Gfx
    Gfx est déconnecté
    Expert Confirmé Sénior
    Avatar de Gfx
    Inscrit en
    mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : mai 2005
    Messages : 1 770
    Points : 8 170
    Points
    8 170

    Par défaut

    Mais comment faire pour que le premier textArea defile avec le 2eme. Cad, lorsque l'utilisateur descend via les ascensseurs le textArea ds lequel il ecrit, je souhaite que le deuxieme textArea (celui avec les n°lignes) descende de la meme maniere, afin que les lignes suivent.
    En fait c'est très simple. Imaginons que tu deux JScrollPane appelés scroll1 et scroll2. Voici comment faire :

    scroll2.getVerticalScrollbar().setModel(scroll1.getVerticalScrollbar().getModel());

    Et voilà ! Tu peux faire de même avec les ascenceurs horizontaux.
    Romain Guy
    Android - Mon livre - Mon blog

  9. #9
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Ca me parait une bonne idée, mais où place ce code??
    car dans mon JFrame, j'ai plein de petites choses (eveneùents,...)

    MERCI

  10. #10
    Membre chevronné Avatar de sozie9372
    Inscrit en
    mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : mai 2005
    Messages : 713
    Points : 695
    Points
    695

    Par défaut

    Salut !
    En fait tu n'as qu'à le définir après la déclaration de tes scrollpane...
    L'exemple de gfx se trouve ici, par contre il faut que tes deux panels aient le même nombre de lignes sinon ca ne marchera pas...
    +++
    Ju


    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  11. #11
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    MERCI, je trouve l'exemple génial!!!

    Mais voila, tu mets: avoir le meme nom de lignes!!!

    Mais dans mon cas, un des textArea est ecrit par l'utilisateur!!

    Celui de gauche (ou il ya les n°lignes), je ne sais pas combien y aura de lignes???

    Je ne sais pas si je dois deja ecrire les n°lignes (au moment de lancer l'application) ou de le faire au fur et à mesure que l'utilisateur ecrti!!!

    Dans le 2eme cas, je ne sais pas encore comment faire (car j'ai aussi une fonctione sauver - charger, donc l'utilisateur peut charger un fichier tt ds le txtArea...il faudrait alors que je compte le nbre de lignes dès qu'il charge!!!)

    Dans le cas où il ne charge pas, faudrait que je prenne tous les "/n" et à chaque fois ajouter un n°ligne !!!

    Mais je pense que ce serait lourd de faire comme ca, non??
    Le plus simple n'est-il pas de mettre à l'avance les n°lignes???

    Où peut-etre existe-t-il une fct java qui calcul le nbre de lignes ds un textArea!!

    MERCI Pour les reponses futurs et à ceux qui ont deja participé à ce topic!!

  12. #12
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Voila, j'ai réussi à faire défiler les 2 scroll verticaux. Ca, ca marche.

    MAsi maintenant il me reste à savoir comment mettre les N° lignes?
    Est-ce que je dois les ecrire à la main (mais là je ne sais pas à l'avance combien j'aurais de lignes), ou y a t il une technique pour ecrire les N° ligne au fur et à mesure que l'utilisateur passe les lignes?

    MERCI POUR VOS SUGGESTIONS

  13. #13
    Gfx
    Gfx est déconnecté
    Expert Confirmé Sénior
    Avatar de Gfx
    Inscrit en
    mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : mai 2005
    Messages : 1 770
    Points : 8 170
    Points
    8 170

    Par défaut

    Tu peux assez facilement modifier le viewport du JScrollPane pour afficher un composant a cote de la JTextArea et qui contiendra les numeros de ligne. Regarde la documentation de JTextArea (et notamment de Document) pour obtenir les numeros de lignes etc.
    Romain Guy
    Android - Mon livre - Mon blog

  14. #14
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    pas trouvé de doc sur JtextArea contenant une aide sur Document
    En tout cas, pas chez java
    Je peux trouver ca où?

    MERCI

  15. #15
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Personne ne peut me guider vers la doc appropriée?

  16. #16
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par Gfx
    Tu peux assez facilement modifier le viewport du JScrollPane pour afficher un composant a cote de la JTextArea et qui contiendra les numeros de ligne. Regarde la documentation de JTextArea (et notamment de Document) pour obtenir les numeros de lignes etc.
    Personne ne peut m'indiquer le lien pour trouver cette aide car impossible à trouver sur google (ou alors je tape pas les bonne choses)

    MERCI

  17. #17
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    Je m'inquiete de ne pas avoir de petits liens.. Mettre les n° lignes sur mon textArea, c'est la seule chose qui me manque poir mon appllication.

  18. #18
    Membre chevronné Avatar de sozie9372
    Inscrit en
    mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : mai 2005
    Messages : 713
    Points : 695
    Points
    695

    Par défaut

    Salut !

    En tapant JTextArea Line Numbers, je suis tombé sur ca :
    http://www.esus.com/docs/GetQuestionPage.jsp?uid=1326
    J'espère que ca pourra t'aider...

    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  19. #19
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 521
    Points : 58
    Points
    58

    Par défaut

    sozie9372: merci à toi, mais quelqu'un m'avait deja donné ce lien, mais je n'y comprends pas grand chose!!!

    mais avec ce code j'ai 2 erreurs:
    Code :
    1
    2
    3
     
       int []justified = { LineNumberedBorder.LEFT_JUSTIFY,
                              LineNumberedBorder.RIGHT_JUSTIFY};
    il ne peut pas trouver LineNumberedBorder

    Mais j'ai fait par moi meme un petit quelque...mais j'ai besoin de VOTRE AIDE pour une petit bug d'affichage:

    Au fait, j'ai mis un premier txtArea a gauche et à autre juste à sa droite. Celui à gauche j'interdis l'edition, l'utilisateur ne peut ecrire que sur le textArea droit et voila le code (TextArea2 est celui de droite, dans lequel il peut ecrire, le TextArea1 est celui dans lequel j'atoute les n° lignes):

    Code :
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    public class essaiNumLignes extends javax.swing.JFrame {
        static int i=0;
        static int lignesEcrites=1;
        /** Creates new form essaiNumLignes */
        public essaiNumLignes() {
            i=1;
            initComponents();
        }
     
     
    ////********La c'est Netbeans qui a tout ecrit********
    ////*** Allez plus bas pour voir mon code ***********
     
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
            jScrollPane1 = new javax.swing.JScrollPane();
            TextArea1 = new javax.swing.JTextArea();
            jScrollPane2 = new javax.swing.JScrollPane();
            jScrollPane1.getVerticalScrollBar().setModel(jScrollPane2.getVerticalScrollBar().getModel());
            TextArea2 = new javax.swing.JTextArea();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jScrollPane1.setBorder(null);
            jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
            jScrollPane1.setAutoscrolls(true);
            jScrollPane1.setWheelScrollingEnabled(false);
            TextArea1.setBackground(javax.swing.UIManager.getDefaults().getColor("Panel.background"));
            TextArea1.setColumns(20);
            TextArea1.setEditable(false);
            TextArea1.setRows(5);
            jScrollPane1.setViewportView(TextArea1);
     
            jScrollPane2.setViewport(null);
            jScrollPane2.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    jScrollPane2MouseClicked(evt);
                }
            });
     
            TextArea2.setColumns(20);
            TextArea2.setRows(5);
            TextArea2.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyReleased(java.awt.event.KeyEvent evt) {
                    TextArea2KeyReleased(evt);
                }
            });
     
            jScrollPane2.setViewportView(TextArea2);
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .addContainerGap()
                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 24, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 385, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap())
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 289, Short.MAX_VALUE)
                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 289, Short.MAX_VALUE))
                    .addContainerGap())
            );
            pack();
        }// </editor-fold>                        
     
     
    /////*******************C'est là que ca commence reellement******
     
     
        private void TextArea2KeyReleased(java.awt.event.KeyEvent evt) {                                      
        if(evt.getKeyCode()==10){
     
     
            int nbrlignes=TextArea2.getLineCount();
            if (nbrlignes<lignesEcrites){
     
                TextArea1.setText("");
                for(int j=1;j<=nbrlignes;j++){
                    TextArea1.setText(TextArea1.getText()+j+"\n");
                }
            }
            if (nbrlignes>lignesEcrites){
                    for(int j=(lignesEcrites+1);j<=nbrlignes;j++){
                      TextArea1.setText(TextArea1.getText()+j+"\n");
                    }   
            }
            lignesEcrites=nbrlignes;
            TextArea2.requestFocus();
        int position = TextArea2.getCaretPosition();
        TextArea2.insert("",position); ///J'ai essayé ca pour evenir au haut de mon textArea2, mais ca fct pas
        }
     
     
        }                                     
     
        private void jScrollPane2MouseClicked(java.awt.event.MouseEvent evt) {                                          
     
        }                                         
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new essaiNumLignes().setVisible(true);
                    TextArea1.setText(1+"\n");
                    i++;              
                }
            });
     
            //jScrollPane1.getVerticalScrollBar().setModel(jScrollPane2.getVerticalScrollBar().getModel());
     
        }
     
        // Variables declaration - do not modify                     
        private static javax.swing.JTextArea TextArea1;
        private static javax.swing.JTextArea TextArea2;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JScrollPane jScrollPane2;
        // End of variables declaration                   
     
    }

    Donc j'explique: au debut, on affiche que "1" ds le textArea1
    Ensuite, à chaque fois que l'utilisateur tape sur enter (touche==10), alors on regarde le nombre de ligne qu'on a ds le TextArea2 et soit on ajoute les n°lignes en plus à gauche (si il ajoute des lignes) ou on en retire (dans le cas où l'utilisateur efface bcp de lignes et puis appuis sur Enter, là on rafraichit.....ICI, tout va tres bien, ca fct tres bien, mais voila:


    Imaginons qu'on a 100 lignes (ds TextArea2) et que les n°lignes vont jusque 100. L'utilisateur veut ajouter une ligne au debut de son textArea2, alors il remonte via les ascensseurs (comme les ascenceurs sont liés, les n°lignes qui sont à gauche (TxtArea1) remontent aussi).
    Ensuite il ecrit son mot et il appuis sur enter--> voila le probleme: il y a "101" qui s'ajoute ds les n°lignes, mais pour ajouter ca, il faut que l'ascencsseur des n°lignes descendent, ce qui fait que l'ascenseur TextArea2 descend aussi et l'utilisateur se retrouve au bas du TextArea alors qu'il était au debut.

    C'est juste se probleme qui gene, sinon tout le reste fct!!

    Comment faire!!

    J'ESPEE QUE MON EXPLICATION EST BONNE, sinon demandez moi de preciser les trucs et j'expliquerai mieux.

    MERCI

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •