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

 Java Discussion :

JTextArea et limite de caractères


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 56
    Par défaut JTextArea et limite de caractères
    Bonjour,

    je souhaite avoir un JTextArea dans une jframe. Je souhaiterais que dans les cas où ce JTextArea est éditable (JTextArea.setEditable(true)) on ne puisse pas écrire en dehors de cette JTextArea. Car quand j'écris dans le JTextArea au lieu que ça s'arrête sur la bordure (et éventuellement de passer à la ligne) je peux encore écrire et les caractères disparaissent sous la bordure... Comment faire pour éviter cela ?
    Je ne sais pas si ça fait la même chose dans le cas d'un JTextArea non éditable mais je ne voudrais pas que ça puisse arriver.
    Avez vous une idée ?
    Connaissez vous quelque chose de plus efficace ?
    Connaissez vous quelque chose de plus adapté si je souhaite afficher les traces des connexions des différents clients sur le serveur ? Ce que j'ai fais pour le moment c'est un gros JTextArea. Mais je ne sais pas encore gérer les non dépassement de bordure, et j'aimerais insérer des scroll bar.

    Une ou plusieurs idées ?
    Merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    les méthodes setLineWrap et setWrapStyleWord sont là pour toi.

    Pour les scrollbar il te suffit de mettre ta JTextArea dans un JScrollPane.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 56
    Par défaut
    Merci beaucoup Sinok.

    En effet c'est en partie ce que je souhaite. Maintenant je ne passe plus sous la bordure à droite et ça va automatiquement à la ligne. Par contre si la JTextArea ne fait qu'une ligne, cette fois les caractères passent à la ligne d'après sous la bordure. (remarque ça le fait aussi si la JTextArea fait plus d'une ligne)

    |--------------------|
    |Bonjour je souhaite u| // sans le setWrapStyleWord(true)
    |--------------------|
    tiliser les JTextArea..

    J'ai fait un pseudo code avec du KeyListener mais ce n'est vraiment pas propre et ça efface le dernier caractère pour le remplacer par le dernier tapé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    trace.addKeyListener(new KeyListener(){
    	@Override
    	public void keyPressed(KeyEvent arg0) {}
    	@Override
    	public void keyReleased(KeyEvent arg0) {}
    	@Override
    	public void keyTyped(KeyEvent arg0) {
    		if((trace.getText().length()+1) == 16)
    			trace.setText(trace.getText().substring(0, 14));
    	}
    });
    Pour le scroll bar, quand j'écris plus de ligne que le conteneur, ça va sous la bordure et la scroll bar ne s'agrandit pas.

    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
     
    public Serveur(){
     
            this.setLocationRelativeTo(null);
    	this.setSize(400,400);
    	this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    	//this.setResizable(false);
     
    	/** JPANEL **/
    	panel = new JPanel();
    	GridBagLayout layout = new GridBagLayout();
    	panel.setLayout(layout);
     
    	GridBagConstraints c = new GridBagConstraints();
     
    	/** JTEXTAREA **/
    	trace = new JTextArea();
    	trace.setEditable(true);
    	trace.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    	trace.setPreferredSize(new Dimension(350, 300));
    	trace.setLineWrap(true);
    	trace.setWrapStyleWord(true);
     
    	/** JSCROLLPANE **/
    	textPanel = new JScrollPane(trace);
    	c.fill = GridBagConstraints.BOTH;
    	c.gridx = 0;
    	c.gridy = 0;
    	textPanel.setPreferredSize(new Dimension(350, 300));
    	panel.add(textPanel, c); // Utile ?
     
    	this.add(panel);
    	this.setVisible(true);
    }
    Je ne vois pas vraiment pourquoi...
    Si vous avez encore des conseils à me donner n'hésitez pas !

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Enlève l'appel à la méthode setPreferredSize de ta JTextArea (trace en l'occurence).

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 56
    Par défaut
    Merci !

    Par contre à d'autres endroits, quand ma JTextArea n'est pas dans un JScrollPane avec une preferredSize, et bien j'ai le droit à un JTextArea très très large...

    edit : non c'est bon j'ai corrigé le problème. Mais par contre je n'ai pas résolu le problème du nombre limite de caractères dans un JTextArea !

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 56
    Par défaut
    Une petite idée pour ne pas écrire plus que x caractères dans un JTextArea ?

    Merci

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

Discussions similaires

  1. [JTextArea] Comment limiter le nombre de caractères ?
    Par d_hazem dans le forum Composants
    Réponses: 1
    Dernier message: 18/08/2008, 17h21
  2. [JTextField]limiter les caractères ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/12/2005, 12h12
  3. Réponses: 1
    Dernier message: 18/08/2005, 15h11
  4. limite de caractère sur un type="texte"
    Par auduma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/03/2005, 14h06
  5. Varchar2 limité à 256 caractères (SQLLoader, 9i)
    Par nuke_y dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 09/11/2004, 12h20

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