Impossible d'utiliser correctement un JSrollPane

Résolu
Signaler
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009
-
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009
-
Bonjours à tous,

Aprés de nombreuse recherche sur l'utilisation de JScrollPane, je n'arrive toujours pas à le faire fonctionner ... Je doit oublier quelque chose car d'aprés les codes que j'ai pu lire, ça n'a pas l'air difficile!
C'est donc pourquoi je vous demande un peu d'aide!

Donc je vous explique, j'ai créé une frame, avec 3 composants: une barre de menu, une JProgressBar, et JTextePane. Tout marche comme je le veux, le JTextePane reçoit au fur et à mesure des phrases à afficher, il me manque juste l'insertion d'un scroll pour pouvoir voir tout ce qu'il a afficher au cour de la procédure.

Je vous copie le bout de code:

            // Zone de texte principale
            Menu menuDuProjet = new Menu();
            menuDuProjet.pane = new JTextPane();


            // Fenêtre principale
            JFrame frame = new JFrame("Projet Stage Lionel Mai/Juin 07"); 
            frame.setSize(508,535); 
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            frame.setLocationRelativeTo(frame.getParent()); // Pour centrer la fenêtre au centre de l'écran
           
            //Scrollbar 
            JScrollPane scroll = new JScrollPane(menuDuProjet.pane);
           
            //Placement manuel des différents composants
            frame.setLayout(null);
            
           //Coordonnées et tailles des composants
            menuDuProjet.pane.setBounds(0,0,500,455);
            jBar.setBounds(0,455,500,20);


            //Insertion des composants
            frame.add(menuDuProjet.pane);
            frame.add(jBar);
            frame.setJMenuBar(menuDuProjet.menuBar);
            frame.add(scroll, "CENTER")
            
           frame.setVisible(true);

Voila, voila, si quelqu'un pouvait me renseigner! J'ai déjà essayer pas mal de "bidouillage" mais ça ne marche pas, et je ne comprend pas!

Merci à vous!

24 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Voici un code qui marche :
public class Test extends JFrame {

    public Test() {
        super();
        JTextArea text = new JTextArea();
        JScrollPane scroll = new JScrollPane(text);
        add(scroll);
        setSize(300, 300);
        setVisible(true);
    }
   
    public static void main(String[] args) {
        new Test();
    }

}
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
C'est quoi ce



frame.add(scroll, "CENTER") alors que tu est en layout null ???

Un bon conseil, utilise un BorderLayout pour ton interface au lieu de fixer les dimensions !

Sinon cà doit être :


frame.setJMenuBar(menuDuProjet.menuBar, BorderLayout.EAST);
frame.add(scroll, BorderLayout.Center)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Oulà, désolé pour la grandeur des caractères, je freetextbox buggue !
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

J'ai essayer DarkSidious d'utiliser un BorderLayout, mais ma scroll ne se mettait toujours pas ...
Et au niveau de mon code, désolé du "CENTER", jl'ai copié sans réfléchir ;-)

Mais ça ne marche toujours pas ... Et je ne vois pas d'ou ça vient... Je suis vraiment bloqué à ce niveau, et c'est la dernière chose qu'il me manque pour finaliser mon projet de stage !

Une autre idée? Merci quand même de ton aide
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Ben pourtant ton code me paraît bon.

Hormis le truc du Menu :
Ton textpane est dans ton menu ? Y'a un truc que je pige pas à ce niveau là !

Menu menuDuProjet = new Menu();
menuDuProjet. pane = new JTextPane();
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Non non, mon TextPane est en dessous du menu, Menu est le nom d'une de mes classes.
J'espere que tu comprend ce que je veux dire, car même moi je ne comprend pas tout, je viens de débuter Java!
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Mince Dark ... je me suis mélanger ... scuse moi!

Je te recopie mon code tel qu'il est en ce moment:

            // Zone de texte principale
            Menu menuDuProjet = new Menu();
            JTextPane pane = new JTextPane();            // Fenêtre principale
            JFrame frame = new JFrame("Projet Stage Lionel Mai/Juin 07"); 
            frame.setSize(508,535); 
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            frame.setLocationRelativeTo(frame.getParent()); // Pour centrer la fenêtre au centre de l'écran
           
            //Scrollbar 
            JScrollPane scroll = new JScrollPane(pane);
           
            //Placement manuel des différents composants
            frame.setLayout(null);
            
           //Coordonnées et tailles des composants
            pane.setBounds(0,0,500,455);
            jBar.setBounds(0,455,500,20);

            //Insertion des composants
            frame.add(pane);
            frame.add(jBar);
            frame.setJMenuBar(menuDuProjet.menuBar);
           pane.add(scroll)
            
           frame.setVisible(true);

Voila, en rouge c'est ce qu'il change par rapport au premier.

Merci de ta compréhension
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Ok, c'est déjà plus clair

enlève la ligne
frame.add(pane);

Et en théorie, ca doit être bon je pense (il faut rajouter le scrollpane à ton panel principal et non le textpane)
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

 Si s'était si simple ...!
Ca ne marche pas! Erreur:  adding container's parent to itself

Et voici à quelle ligne (celle en rouge):

           //Insertion des composants
            frame.add(jBar);
            frame.setJMenuBar(menuDuProjet.menuBar);
            pane.add(scroll);

Ca avait l'air tellement simple sur les exemples pourtant !
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
ah ben non ! j'avais pas fait gaffe :)

frame.add(scroll);
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Bon ...

J'ai remplacé pane.add(scroll); parframe.add(scroll); et j'en arrive toujours au même point que lorsque j'essayait : La frame est grise (couleur de la scroll) et plus rien ne s'affiche dedans! En gros, il me semble que c'est une enorme scroll qui est affichée! Et mon TextePane est en dessous ;-)

Et je comprend pas pourquoi sa fait ça !!!!

Merci de ta patience en tout les cas Dark

Et au fait, génial ton jeu Mario !!!
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
ben là je vois plus trop alors ! Je ferais des tests dans la soirée et je te tiens au courant.

P.S. : merci pour le jeu ;)
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Ok pas de soucis, merci à toi c'est sympas !

Moi c'est déjà le 3ème jours que je passe du temps sur ça, et je n'y arrive toujours pas!

En tout cas, si quelqu'un d'autre à une idée, n'hésitez pas, j'en ai besoin!

Merci
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

si ton composant est le seul de ta fenetre pourquoi ne pas faire simplement setContentPane(scroll) ???

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Merci Dark, ca marche, mais seulement, c'est dans une nouvelle frame que se trouve le JTextArea ainsi que sa scroll !

 Et sinon, Twinuts, ce n'est pas le seul composant sur ma fenêtre

Merci a vous deux, j'y croit encore a ma scroll !!!
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
C'est juste un exemple pour te montrer, à toi d'adapter à ton projet.
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Oui niquel, merci encore Dark de ta patience


Mais je ne comprend pas, pourquoi créer une méthode pour pouvoir inserer cette scroll, alors que le code que je mettait dans mon main était pareil? Tu saurais m'expliquer ça?! Ca reste un peu flou pour moi!


 


Merci encore a vous deux
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Personne ne saurait m'expliquer ceci svp?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
C'est quoi que t'as as compris ?
Messages postés
44
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
2 octobre 2009

Je ne comprend pas pourquoi il faut créer une méthode pour la JScrollBar, et pourquoi ne pas directement mettre le code dans la méthode main ?!


C'est sûrement bête, mais je ne comprend pas pourquoi !