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 :

Scroll sur une JTextArea


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de titus55
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 115
    Par défaut Scroll sur une JTextArea
    Bonjour,
    j'ai un petit problème avec un JscrollPane de mon appli :

    j'ai une JTextArea contenue dans un JPanel "scrollable".
    Or quand je scroll au-dessus de ma JTextArea le scroll du JPanel s'arrete et ma roulette tourne dans le vide.

    Comment faire pour continuer a scroller le JPanel même en passant le curseur de la souris au-dessus de ma JTextArea?

    Merci

  2. #2
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut
    Ca ne parait pas logique que ce soit possible, en effet, quand tu passes la souris au dessus du JTextArea, c'est comme si elle prenait le "focus" de ta souris, et c'est donc la JTextArea scrollable qui prend en compte le scroll, logique nan?

  3. #3
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonjour,

    Première question : c'est bien ton JPanel qui est scrollable et non ton JTextArea ?

    Deuxième question : est-ce que ton JPanel contient autre chose que ton JTextArea. Si ton JTextArea est seul dans le JPanel scrollable : ca vient peut etre de là.

    Sinon met nous un ptit bout de code que l'on puisse regarder.

    J'ai essayé chez moi en reproduisant ce que tu explique et j'arrive a scroller au delà de mon JTextArea.

  4. #4
    Membre confirmé Avatar de titus55
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 115
    Par défaut
    Merci pour vos réponses,
    xWolfy -> en effet quand je passe au-dessus de la JTextArea elle prend le focus et c'est donc elle qui récupère l'évènement du scroll (même lorsqu'elle ne contient pas de JScrollPane).

    floflo_2006 -->Oui c'est bien mon JPanel qui est scrollable (il contient entre autre des JLabels et la JTextArea).

    J'ai fais une petite classe de test pour illustrer mon problème.
    Lorsque l'on scroll le JPanel et que le curseur passe sur la JTextArea, le scroll du JPanel s'arrête (c'est la JTextArea qui récupère l'évènement scroll)

    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
     
    import java.awt.Dimension;
     
    import javax.swing.Box;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
     
    public class TestScrollPanel extends JFrame
    {
    	public TestScrollPanel()
    	{
    		JPanel p = new JPanel();
    		Box box = Box.createVerticalBox();
    		box.setPreferredSize(new Dimension(150, 500));
    		JLabel label0 = new JLabel("TestScrollPane0");
    		JTextArea area = new JTextArea(5,10);
    		JLabel label1 = new JLabel("TestScrollPane1");
    		JLabel label2 = new JLabel("TestScrollPane2");
    		JLabel label3 = new JLabel("TestScrollPane3");
    		JLabel label4 = new JLabel("TestScrollPane4");
    		JLabel label5 = new JLabel("TestScrollPane5");
     
    		box.add(label0);
    		box.add(new JScrollPane(area));
    		box.add(label1);
    		box.add(label2);
    		box.add(label3);
    		box.add(label4);
    		box.add(label5);
    		p.add(box);
    		add(new JScrollPane(p));
     
    		setPreferredSize(new Dimension(150, 300));
     
    	}
     
    	public static void main(String[] args)
    	{
    		TestScrollPanel t = new TestScrollPanel();
    		t.pack();
    		t.setVisible(true);
    	}
    }

    Voilà si quelqu'un a un moyen simple d'éviter de "scroller" dans le vide je suis preneur (j'avais pensé à récupérer l'évènement dans la JTextArea et essayer de la retransmettre au JPanel mais ça me parait assez lourd et mon code est déjà bien fournit)

  5. #5
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonsoir,

    Si tu modifies celà, ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //box.add(new JScrollPane(area));
    box.add(area);
    Sinon tu as deux JScrollPane :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    box.add(new JScrollPane(area));
    add(new JScrollPane(p));
    Et je ne sais pas comment est géré le fait d'avoir 2 JScrollPane et de plus imbriqués. Le problème vient surement de là.

  6. #6
    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
    Laissez tomber, vous êtes en plein sur un bug non résolu de Swing:

    http://bugs.sun.com/bugdatabase/view...bug_id=6454595


    Pour faire plus fin comme explication:

    Le comportement normal de ScrollPane imbriqués dans les autres toolkits de swing est le suivant:

    le scrollpane intérieur consomme les évènements tant qu'il n'arrive pas à la fin du composant qu'il contient. Dans le cas contraire il redirige l'évènement vers le scrollpane le contenant.

    Malheureusement la deuxième étape ne marche pas en Swing, le scrollpane intérieur continuant à consommer les évènements souris (donc la molette).

    D'où ton problème que tu ne pourras pas résoudre.
    ++

Discussions similaires

  1. Obtenir un scroll sur une galerie d'images
    Par petitours dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 16/08/2009, 18h41
  2. gérer le scroll sur une pop-up de type confirm
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/05/2009, 14h45
  3. Problème de Scroll sur Une TStringGrid en mode saisie
    Par Delphi-ne dans le forum Delphi
    Réponses: 5
    Dernier message: 23/10/2006, 09h50
  4. Scrolling sur une ListBox
    Par dede92 dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2006, 18h56

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