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

Interfaces Graphiques en Java Discussion :

Inverser le déplacement du ScrollBar


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Inverser le déplacement du ScrollBar
    Bonjour;

    Je suis entrain de développer une interface JFrame en Java.
    Je suis entrain d'utiliser un ScrollBar vertical avec JScrollPane, par defaut l'index du scrollBar reste en haut du scroll. Moi je veux inverser le déplacement du scrollBar d'une façon que l'index sera en bas du scrollBar pour pouvoir afficher toujours ce qui a été affiché en dernier lieu.
    Merci bien de m'aider.

    Cordialement
    Liavart

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Bonjour;

    J'ai pas encore réussi à trouver la solution.
    Merci de m'aider.

    Cordialement
    Liavart

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    absolument pas clair comme question...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    J'ai un ScrollBar dans mon interface graphique (considéré comme console de mon application), et j'ai des output de mon application que je les affiche dans cette console. A un certain moment le ScrollBar commence à s'afficher pour que je puisse afficher ce qui a été ajouté comme output le dernier.
    L'index du ScrollBar est intialement on the "up" donc il ne va pas afficher ce qui a été ajouté derniérement dans ma console, de ce fait je glisse manuellement l'index vers la fin du ScrollBar pour que je puisse les voir.
    J'ai voulu inverser l'index du ScrollBar vers le "down" pour pouvoir afficher tout le temps le dernier output.

    Merci pour votre réponse.

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Regarde du côté de JTextComponent#setCaretPosition
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Je n'ai plus réussi à résoudre mon problème, voici mon code :
    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
     
    package console;
     
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollBar;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
     
    public class Fenetre extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private static final String TITRE = "Console";
    	private static final String SIGNATURE = "Console Application";
    	private static final int WIDTH = 640;
    	private static final int HEIGHT = 480;
    	private JPanel panneau;
    	private JLabel etiquette;
    	private JScrollPane scrolling;
    	private JList liste;
    	private DefaultListModel modele;
    	private Font police;
    	private Dimension dim;
     
    	public Fenetre() {
     
    	 // titre
    	 setTitle(TITRE);
    	 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
     
    	 // taille  
    	 setSize(WIDTH, HEIGHT);
     
    	 // dimension
    	 dim = new Dimension(610, 420);
     
    	 // police
    	 police = new Font("Verdana", 0, 12);
     
    	 // panneau  
    	 panneau = new JPanel();
     
    	 // signature
    	 etiquette = new JLabel(SIGNATURE);
    	 etiquette.setFont(police);
     
    	 // modele
    	 modele = new DefaultListModel();
     
    	 // liste
    	 liste = new JList(modele);
    	 liste.setFont(police);
     
    	 // scrolling
    	 scrolling = new JScrollPane(liste);
    	 scrolling.setPreferredSize(dim);
     
         // mise en forme  
    	 panneau.add(scrolling, "Center" );
    	 panneau.add(etiquette, "South" );
    	 getContentPane().add(panneau);
    	 this.setResizable(false);
    	 scrolling.getVerticalScrollBar().setValue(scrolling.getVerticalScrollBar().getMaximum());
    	 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    	}
     
    	public void afficherTexte(String unTexte) {
     
    	 modele.addElement(unTexte);
     
    	}
     
    }
    Merci de m'aider

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    S'il vous plaît est ce que quelqu'un connais la solution?
    c'est urgent.

  8. #8
    Membre confirmé Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 505
    Points
    505
    Par défaut
    As-tu essayé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.ensureIndexIsVisible(listModel.getSize()-1);

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Je l'ai essayé, elle ne fait rien

  10. #10
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    dans afficherText, ajoute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrolling.getViewport().setViewPosition(new Point(0, Integer.MAX_VALUE));
    mais un peu de recherche personnelle ne ferait pas de mal...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  11. #11
    Membre confirmé Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 505
    Points
    505
    Par défaut
    Voici ton code modifier (avec seulement ensureIndexIsVisible) pour toujours afficher sur la dernière ligne ajoutée à la liste :
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    package pkg;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.event.ListDataEvent;
    import javax.swing.event.ListDataListener;
     
    public class Fenetre extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private static final String TITRE = "Console";
    	private static final String SIGNATURE = "Console Application";
    	private static final int WIDTH = 640;
    	private static final int HEIGHT = 480;
    	private JPanel panneau;
    	private JLabel etiquette;
    	private JScrollPane scrolling;
    	private JList liste;
    	private DefaultListModel modele;
    	private Font police;
    	private Dimension dim;
     
    	public Fenetre() {
     
    	 // titre
    	 setTitle(TITRE);
    	 setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    	 // taille  
    //	 setSize(WIDTH, HEIGHT);
     
    	 // dimension
    	 dim = new Dimension(610, 420);
     
    	 // police
    	 police = new Font("Verdana", 0, 12);
     
    	 // panneau  
    	 panneau = new JPanel(new BorderLayout(7, 7));
    	 panneau.setBorder(new EmptyBorder(7, 7, 7, 7));
     
    	 // signature
    	 etiquette = new JLabel("Cliquer ici pour ajouter une ligne", JLabel.CENTER);
    	 etiquette.setFont(police);
    	 etiquette.addMouseListener(new MouseAdapter() {
    		 @Override
    		public void mouseClicked(MouseEvent e) {
    			 afficherTexte(Long.toString(e.getWhen()));
    		}
    	 });
     
    	 // modele
    	 modele = new DefaultListModel();
    	 modele.addListDataListener(new ListDataListener() {
    		@Override
    		public void contentsChanged(ListDataEvent e) {
     
    		}
     
    		@Override
    		public void intervalAdded(ListDataEvent e) {
    			liste.ensureIndexIsVisible(e.getIndex0());
    		}
     
    		@Override
    		public void intervalRemoved(ListDataEvent e) {
     
    		}
     
    	 });
     
    	 // liste
    	 liste = new JList(modele);
    	 liste.setFont(police);
     
    	 // scrolling
    	 scrolling = new JScrollPane(liste);
    //	 scrolling.setPreferredSize(dim);
     
         // mise en forme  
    	 panneau.add(scrolling, BorderLayout.CENTER);
    	 panneau.add(etiquette, BorderLayout.SOUTH);
    	 getContentPane().add(panneau);
    //	 this.setResizable(false);
    //	 scrolling.getVerticalScrollBar().setValue(scrolling.getVerticalScrollBar().getMaximum());
    	}
     
    	public void afficherTexte(String unTexte) {
    		modele.addElement(unTexte);
    	}
     
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			@Override
    			public void run() {
    				Fenetre fenetre = new Fenetre();
    				fenetre.pack();
    				fenetre.setVisible(true);
    			}
    		});
    	}
     
    }

  12. #12
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merciiiii bien pour vos réponses.
    Merci bien ngpub ta solution marche bien.

    Cordialement
    Liavart

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

Discussions similaires

  1. Reproduire le déplacement d'une scrollbar
    Par Heroiik dans le forum Débuter
    Réponses: 4
    Dernier message: 21/05/2013, 13h13
  2. déplacement scrollbar VB6
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/03/2011, 16h05
  3. calcul du déplacement de la zone client : Scrollbar
    Par kanea_iza dans le forum Windows
    Réponses: 1
    Dernier message: 16/05/2007, 15h57
  4. Déplacement automatique de la scrollbar
    Par Rom1984 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/03/2007, 22h43
  5. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53

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