A voir également:
- Barre de défilement en Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Barre de défilement - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
28 réponses
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...
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...
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
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
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...
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
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
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...
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...
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
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...
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 ?
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...
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
> 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...
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...
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...
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