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 :

JScrollPane pas automatiquement en bas


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut JScrollPane pas automatiquement en bas
    Bonjour,

    Ben... voilà, j’utilise un JScrollPane sur un JTextPane pour afficher des messages à l’utilisateur mais le JScrollPane ne se met pas automatiquement en bas lorsqu'il y a un nouveau message...
    Pourriez-vous me fournir une piste pour régler mon problème...ce serai très gentil.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    Lorsque tu ajoutes du texte dans le JTextArea, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JScrollBar bar = monJScrollPane.getVerticalScrollBar();
    bar.setValue(bar.getMaximum());
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Et pour un JTextPane, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    textPane.setCaretPosition(textPane.getDocument().getLength());

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    ok merci j'ai réussi

    Voici ma class pour les personnes qui ont le même problème que moi (je ne prétends certainement pas que mon code est un exemple de clarté ).

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    public class MessagePanel extends JPanel {
    	public MessagePanel() {
    		super();
     
    		messageOut = new JTextPane();
    		docOut = new DefaultStyledDocument();
     
    		setLayout(new BorderLayout());
     
    		messageOut.setEditable(false);
    		messageOut.setPreferredSize(new Dimension(100,100));
    		messageOut.setDocument(docOut);
    		def = StyleContext.getDefaultStyleContext().getStyle(
    				StyleContext.DEFAULT_STYLE);
    		StyleConstants.setFontFamily(def, "SansSerif");
    		regular = messageOut.addStyle("regular", def);
    		s = messageOut.addStyle("red", regular);
    		StyleConstants.setForeground(s, Color.RED);
    		s = messageOut.addStyle("green", regular);
    		StyleConstants.setForeground(s, Color.GREEN);
    		s = messageOut.addStyle("black", regular);
    		StyleConstants.setForeground(s, Color.BLACK);
     
    		sp = new JScrollPane(messageOut);
     
    		add(new JLabel("   MESSAGE :"), BorderLayout.NORTH);
    		add(sp, BorderLayout.CENTER);
    	}
     
    	public static void writeMessageInWindows(String text, String color) {
    		try {
    			String timeNow = DateFormat.getTimeInstance(DateFormat.SHORT,
    					Locale.FRANCE).format(new Date());
    			docOut.insertString(docOut.getLength(), "<" + timeNow + "> ",
    					messageOut.getStyle("black"));
    			docOut.insertString(docOut.getLength(), text, messageOut
    					.getStyle(color));
    			docOut.insertString(docOut.getLength(), "\n", messageOut
    					.getStyle("black"));
    			docOut.addDocumentListener(new OutDocListener());
    		} catch (BadLocationException ble) {
    			System.out.println("ERREUR ECRITURE MESSAGES");
    		}
    	}
     
    	public static void writeMessageInWindows(String text) {
    		writeMessageInWindows(text, "black");
    	}
     
    	static JTextPane messageOut;
     
    	private static DefaultStyledDocument docOut;
     
    	private Style def;
     
    	private Style regular;
     
    	private Style s;
     
    	private static final long serialVersionUID = 1L;
     
    	static JScrollPane sp;
    }
     
    //////////////////////////////////////
    //////////////////////////////////////
     
    class OutDocListener implements DocumentListener {
     
    	public void insertUpdate(DocumentEvent arg0) {
    		JTextPane text = MessagePanel.messageOut;
    		text.setCaretPosition(text.getDocument().getLength());
    	}
     
    	public void removeUpdate(DocumentEvent arg0) {
     
    	}
     
    	public void changedUpdate(DocumentEvent arg0) {
     
    	}
     
    }

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/11/2009, 15h46
  2. JScrollPane pas à mon gout
    Par arsenik7 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 31/03/2007, 13h41
  3. Réponses: 3
    Dernier message: 17/04/2006, 23h39
  4. [JScrollPane]pas de barre de defilement !!!
    Par let_me_in dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 04/01/2006, 10h15
  5. [Composant] Le canvas ne se redessine pas automatiquement
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/05/2004, 23h18

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