Barre de défilement en Java
Fermé
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
-
31 mars 2004 à 20:50
Utilisateur anonyme - 10 févr. 2007 à 08:47
Utilisateur anonyme - 10 févr. 2007 à 08:47
A voir également:
- Barre de défilement en Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Barre de défilement - Guide
- Java apk - Télécharger - Langages
- Arrêt défilement excel ✓ - Forum Excel
28 réponses
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
31 mars 2004 à 22:00
31 mars 2004 à 22:00
Salut !
As-tu essayé un truc du style :
Je sais pas si ça marche, mais ça vaut peut-être le coup d'essayer...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
As-tu essayé un truc du style :
maJScrollBar.setValue(maJScrollBar.getMaximum());
Je sais pas si ça marche, mais ça vaut peut-être le coup d'essayer...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
31 mars 2004 à 23:07
31 mars 2004 à 23:07
Je pensais la même chose; mais ça passe pas, la barre reste en haut.
Dohm qui vous bouleg tous
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
31 mars 2004 à 23:15
31 mars 2004 à 23:15
Bizarre... Je ne vois que deux trucs possibles :
- Peut-être un pb de rafrichissement d'écran : essaye de faire un maJScrollBar.repaint(); ou bien un maJScrollBar.paintImmediately(0,0,maJScrollBar.getWidth(),mJScrollBar.getHeight();
- Ou alors, c'est peut-être la valeur max de ta barre de défilement qui n'est pas correcte. Essaye de faire un System.out.println(maJScrollBar.getMaximum()); et de voir si la valeur n'est pas trop proche de la valeur minimale...
J'essaierai demain soir de voir si j'arrive à le faire... Si j'y arrive, je te tiens au courrant...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
- Peut-être un pb de rafrichissement d'écran : essaye de faire un maJScrollBar.repaint(); ou bien un maJScrollBar.paintImmediately(0,0,maJScrollBar.getWidth(),mJScrollBar.getHeight();
- Ou alors, c'est peut-être la valeur max de ta barre de défilement qui n'est pas correcte. Essaye de faire un System.out.println(maJScrollBar.getMaximum()); et de voir si la valeur n'est pas trop proche de la valeur minimale...
J'essaierai demain soir de voir si j'arrive à le faire... Si j'y arrive, je te tiens au courrant...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
31 mars 2004 à 23:25
31 mars 2004 à 23:25
Bon, finalement, je viens de tester maintenant... Ce que je t'ai dit au départ marche nickel... Je te donne la portion de code du JPanel qui contient la barre :
Les valeurs mini et maxi sont par défaut 0 et 100...
Si ça marche toujours pas, donne-moi ton code. J'essaierai de voir ce qui va pas avec...
Bonne soirée !
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
jScrollBar1 = new javax.swing.JScrollBar(); add(jScrollBar1); jScrollBar1.setValue(jScrollBar1.getMaximum());
Les valeurs mini et maxi sont par défaut 0 et 100...
Si ça marche toujours pas, donne-moi ton code. J'essaierai de voir ce qui va pas avec...
Bonne soirée !
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
31 mars 2004 à 23:25
31 mars 2004 à 23:25
merci, j'essaye !
Dohm qui vous bouleg tous
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
>
eee
2 avril 2004 à 18:35
2 avril 2004 à 18:35
???
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
1 avril 2004 à 00:08
1 avril 2004 à 00:08
Le problème c'est que j'utilise un JscrollPane
et que ca invalide la méthode :
Voila mon code ( simplifié) :
et la scrollbar reste en haut !
Dohm qui vous bouleg tous
et que ca invalide la méthode :
Voila mon code ( simplifié) :
private JLabel affichageScenario = new JLabel("Aucun sc\u00e9nario n'a \u00e9t\u00e9 charg\u00e9"); /** Panneau muni d'un ascenseur contenant le texte de déroulement du scénario */ private JScrollPane panneauScenario = new JScrollPane(affichageScenario);; private JScrollBar ascenceur = new JScrollBar() (...) ascenceur.setValue(ascenceur.getMaximum()); panneauScenario.setVerticalScrollBar(ascenceur); PanneauPrincipal.add(panneauScenario);
et la scrollbar reste en haut !
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
1 avril 2004 à 00:24
1 avril 2004 à 00:24
Bon, essaye de mettre la ligne ascenceur.setValue(ascenceur.getMaximum()); complètement à la fin du code (peut-être que le setVerticalScrollBar ou le add réinitialise la valeur de ta barre.
Si ça marche toujours pas, essaye d'afficher ascenceur.getValue() à l'écran à plusieurs endroits dans ton programme pour savoir où exactement ton ascenceur est réinitialisé...
Sur ce, je m'en vais me coucher... Bonne nuit :-)
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Si ça marche toujours pas, essaye d'afficher ascenceur.getValue() à l'écran à plusieurs endroits dans ton programme pour savoir où exactement ton ascenceur est réinitialisé...
Sur ce, je m'en vais me coucher... Bonne nuit :-)
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
1 avril 2004 à 18:37
1 avril 2004 à 18:37
J'ai l'impression que l'objet Jscrollpane annule la méthode setvalue
:
et voila les résultats de cela :
il trouve bien un max mais la mise à jour ne se fait pas !
Dohm qui vous bouleg tous
:
System.out.println("valeur courante :"+ascenceur.getValue()); System.out.println("max : "+ascenceur.getMaximum()); ascenceur.setValue(ascenceur.getMaximum()); System.out.println("valeur courante2 : "+ascenceur.getValue()); validate();
et voila les résultats de cela :
Date Courante22 valeur courante :0 max : 514 valeur courante2 : 0 valeur courante :0 max : 528 valeur courante2 : 11
il trouve bien un max mais la mise à jour ne se fait pas !
Dohm qui vous bouleg tous
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
1 avril 2004 à 21:30
1 avril 2004 à 21:30
Mon petit Dahu, je te promets une colkecte au près des Yetis pour te faire opérer de la patte si tu réussis !!!
Dohm qui vous bouleg tous
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
1 avril 2004 à 21:46
1 avril 2004 à 21:46
Une opération pour ne plus être bancal ??? Faut pas que je rate cette chance :o)
Bon, je vais essayer de te trouver une soluce...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Bon, je vais essayer de te trouver une soluce...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
1 avril 2004 à 22:22
1 avril 2004 à 22:22
Voilà, le code suivant marche... Regarde ce qui diffère par rapport au tien.
Si ça cloche toujours, n'hésite pas...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
/* * TestDohm.java * * Created on 1 avril 2004, 22:12 */ /** * * @author Bernard */ public class TestDohm extends javax.swing.JFrame { /** Creates new form TestDohm */ public TestDohm() { initComponents(); javax.swing.JScrollBar barre = jScrollPane.getVerticalScrollBar(); barre.setValue(barre.getMaximum()); } /** 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. */ private void initComponents() { jScrollPane = new javax.swing.JScrollPane(); jPanel = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Test"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jScrollPane.setMinimumSize(new java.awt.Dimension(300, 300)); jScrollPane.setPreferredSize(new java.awt.Dimension(300, 300)); jPanel.setMinimumSize(new java.awt.Dimension(500, 500)); jPanel.setPreferredSize(new java.awt.Dimension(500, 500)); jScrollPane.setViewportView(jPanel); getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER); pack(); } /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } /** * @param args the command line arguments */ public static void main(String args[]) { new TestDohm().show(); } // Variables declaration - do not modify private javax.swing.JPanel jPanel; private javax.swing.JScrollPane jScrollPane; // End of variables declaration }
Si ça cloche toujours, n'hésite pas...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
2 avril 2004 à 00:46
2 avril 2004 à 00:46
Je pige pas ...
Sinon qq questions sur ton code :
à quoi correspond la méthode pack ?
à quoi sert la méthode setViewportView ?
merci pour tes réponses !
Dohm qui vous bouleg tous
Sinon qq questions sur ton code :
à quoi correspond la méthode pack ?
à quoi sert la méthode setViewportView ?
merci pour tes réponses !
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
2 avril 2004 à 09:35
2 avril 2004 à 09:35
Salut !
La methode pack() permet d'adapter la taille de la fenetre a la taille des composants qu'elle contient (plus precisement a leur preferredSize). Du style elle contient un jScrollPane de 300*300, du coup la taille de la fenetre sera de 300*300 (plus la barre de titre, la barre de menu quand y en a une, et plus aussi l'encadrement).
Quant a la methode setViewPortView, elle sert a inserer le jPanel dans le jScrollPane. Mais je sais pas dans le detail comment ca marche... Pour tout te dire, j'ai genere le code a partir de Sun One Studio (que je trouve vraiment excellent pour faire du design d'interfaces graphiques en Java).
Au pire, t'as un tutorial sur l'utilisation des JScrollPane sur le site de Sun :
http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html
Par contre, c'est en anglais :-(
Si tu bloques encore la-dessus, n'hesites pas !
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
La methode pack() permet d'adapter la taille de la fenetre a la taille des composants qu'elle contient (plus precisement a leur preferredSize). Du style elle contient un jScrollPane de 300*300, du coup la taille de la fenetre sera de 300*300 (plus la barre de titre, la barre de menu quand y en a une, et plus aussi l'encadrement).
Quant a la methode setViewPortView, elle sert a inserer le jPanel dans le jScrollPane. Mais je sais pas dans le detail comment ca marche... Pour tout te dire, j'ai genere le code a partir de Sun One Studio (que je trouve vraiment excellent pour faire du design d'interfaces graphiques en Java).
Au pire, t'as un tutorial sur l'utilisation des JScrollPane sur le site de Sun :
http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html
Par contre, c'est en anglais :-(
Si tu bloques encore la-dessus, n'hesites pas !
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
2 avril 2004 à 18:04
2 avril 2004 à 18:04
trop bizarre, là seule façon que j'ai trouvé pour que ça marche une fois sur 2 c'est
à l'endroit ou j'augmente la taille de mon texte contenu ds le panneau, et si je ne mets pas 2 "ascenceur.setValue(ascenceur.getMaximum());" ça ne marche pas !
En plus, ça ne marche qu'une fois sur 2. un coup il est en bas, je rajoute du texte, il est au 3 quart, je rajoute du texte, en bas ...ect ...
.... Z'y comprennez qq chose vous ?
/////////// mise à jour de l'ascenceur ////////////////////// panneauScenario.setMinimumSize(new java.awt.Dimension(300, 300)); panneauScenario.setPreferredSize(new java.awt.Dimension(300, 300)); panneauScenario.setViewportView(affichageScenario); // ascenceur.setValue(ascenceur.getMaximum()); System.out.println("//////////////////////////////////////////////////////////"); System.out.println("valeur courante :"+ascenceur.getValue()); System.out.println("max : "+ascenceur.getMaximum()); ascenceur.setValue(ascenceur.getMaximum()); System.out.println("valeur courante2 : "+ascenceur.getValue()); panneauScenario.revalidate(); ascenceur.setValue(ascenceur.getMaximum()); panneauScenario.revalidate();
à l'endroit ou j'augmente la taille de mon texte contenu ds le panneau, et si je ne mets pas 2 "ascenceur.setValue(ascenceur.getMaximum());" ça ne marche pas !
En plus, ça ne marche qu'une fois sur 2. un coup il est en bas, je rajoute du texte, il est au 3 quart, je rajoute du texte, en bas ...ect ...
.... Z'y comprennez qq chose vous ?
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
2 avril 2004 à 18:20
2 avril 2004 à 18:20
Deux petites questions :
1) L'ascenceur, tu le récupères bien en faisant un
ascenceur = panneauScenario.getVerticalScrollBar(); ?
2) Elle fait quoi la méthode panneauScenarion.revalidate() ?
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
1) L'ascenceur, tu le récupères bien en faisant un
ascenceur = panneauScenario.getVerticalScrollBar(); ?
2) Elle fait quoi la méthode panneauScenarion.revalidate() ?
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
dohm
Messages postés
975
Date d'inscription
samedi 1 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2010
67
2 avril 2004 à 23:34
2 avril 2004 à 23:34
oui je le récupères comme ça et la méthode validate permet de valider les modifications et de mettre à jour l'affichage
( T'es bien sympa ami Dahu, je tenais à te le dire .... POur la peine je m'en vais répondre à plusieurs postes )
Si tu veux voir le code : http://dom.pillou.free.fr/TER-projet/sources/fenPrincipale.java
Dohm qui vous bouleg tous
( T'es bien sympa ami Dahu, je tenais à te le dire .... POur la peine je m'en vais répondre à plusieurs postes )
Si tu veux voir le code : http://dom.pillou.free.fr/TER-projet/sources/fenPrincipale.java
Dohm qui vous bouleg tous
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
2 avril 2004 à 23:38
2 avril 2004 à 23:38
> T'es bien sympa ami Dahu, je tenais à te le dire ....
Merci, merci ;-)
Juste une question, es-tu sûr que l'appel à cette méthode (revalidate) est nécessaire ? Je ne l'ai jamais utilisé, et j'ai jamais eu de pb de rafraichissement d'écran...
Essaye peut-être de la virer... des fois que ça viendrait de là :-)
Je télécharge ton code, et j'y jetterai un coup d'oeil demain... Pour l'heure, je vais me coucher (une rude matinée m'attends...)
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Merci, merci ;-)
Juste une question, es-tu sûr que l'appel à cette méthode (revalidate) est nécessaire ? Je ne l'ai jamais utilisé, et j'ai jamais eu de pb de rafraichissement d'écran...
Essaye peut-être de la virer... des fois que ça viendrait de là :-)
Je télécharge ton code, et j'y jetterai un coup d'oeil demain... Pour l'heure, je vais me coucher (une rude matinée m'attends...)
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
4 avril 2004 à 00:18
4 avril 2004 à 00:18
Bof, j'ai rien trouvé de bizarre dans ton code... A priori, je vois pas trop pourquoi ça marche pas...
Essaye de remplacer cette ligne :
panneauScenario.setVerticalScrollBar(ascenceur);
par : ascenceur = panneauScenario.getVerticalScrollBar();
Et essaye de virer les appels à revalidate().
A part ça, je vois vraiment pas ce qui pourrait clocher...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
Essaye de remplacer cette ligne :
panneauScenario.setVerticalScrollBar(ascenceur);
par : ascenceur = panneauScenario.getVerticalScrollBar();
Et essaye de virer les appels à revalidate().
A part ça, je vois vraiment pas ce qui pourrait clocher...
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
le_dahu
Messages postés
141
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
21 avril 2004
51
4 avril 2004 à 01:05
4 avril 2004 à 01:05
Ceci dit, je viens de remarquer un truc...
J'ai téléchargé l'ensemble de tes sources... Entre parenthèses, il est cool ton prog (même si je sais pas du tout ce que c'est qu'un simulateur HDLC :o) L'interface est sympa même si j'aurai deux petites critiques à formuler :
- Le "Menu", je l'ai pris au départ pour un simple JLabel, et je pensais qu'il indiquait que les boutons jaunes faisaient office de menu...
- Toute ton interface est en français, sauf le "Exit" de ton menu ;-)
Bon, revenons à notre problème... J'ai fait un peu de ménage dans ton code (y avait quelques lignes redondantes) et je me suis apperçu d'une chose : au départ, si j'affiche ascenceur.getValue(), j'ai 0 et pour ascenceur.getMaximum() j'ai 507.
Par la suite, à chaque fois que j'affiche ces deux valeurs, leur écart de 507 est conservé... Genre j'obtiens Value = 21 et Maximum = 528, puis 169 - 676, etc.
Vraiment bizarre ce truc. Je te tiens au courrant si j'ai du nouveau.
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
J'ai téléchargé l'ensemble de tes sources... Entre parenthèses, il est cool ton prog (même si je sais pas du tout ce que c'est qu'un simulateur HDLC :o) L'interface est sympa même si j'aurai deux petites critiques à formuler :
- Le "Menu", je l'ai pris au départ pour un simple JLabel, et je pensais qu'il indiquait que les boutons jaunes faisaient office de menu...
- Toute ton interface est en français, sauf le "Exit" de ton menu ;-)
Bon, revenons à notre problème... J'ai fait un peu de ménage dans ton code (y avait quelques lignes redondantes) et je me suis apperçu d'une chose : au départ, si j'affiche ascenceur.getValue(), j'ai 0 et pour ascenceur.getMaximum() j'ai 507.
Par la suite, à chaque fois que j'affiche ces deux valeurs, leur écart de 507 est conservé... Genre j'obtiens Value = 21 et Maximum = 528, puis 169 - 676, etc.
Vraiment bizarre ce truc. Je te tiens au courrant si j'ai du nouveau.
A+
Si à gauche j'ai l'amont, c'est bon...
Si à gauche j'ai l'aval, j'suis bancal...
rameur
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
4 avril 2004 à 18:28
4 avril 2004 à 18:28
pour placer tres simplement une barre de defilemet pour un composant on fait simplement :
JScrollPane scroll = new JScrollPane(monComposant, int Vorientation, int Horienttation);
getContentPane().add(scroll);
ou Vorientation , Horientation sont des valeurs entieres statiques de la classe JScrollPane on a par ex
JScrollPane.VERTICAL_SCROLLBAR, JScrollPane.HORIZONTAL_SCROLLBAR, ...
consultez l aide en ligne pour plus de details
JScrollPane scroll = new JScrollPane(monComposant, int Vorientation, int Horienttation);
getContentPane().add(scroll);
ou Vorientation , Horientation sont des valeurs entieres statiques de la classe JScrollPane on a par ex
JScrollPane.VERTICAL_SCROLLBAR, JScrollPane.HORIZONTAL_SCROLLBAR, ...
consultez l aide en ligne pour plus de details