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

Agents de placement/Fenêtres Java Discussion :

Problème JScrollPane: scrollbar verticale en bas au départ


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Par défaut Problème JScrollPane: scrollbar verticale en bas au départ
    Bonjour,
    j'ai une fenêtre d'aide composé à gauche d'un menu et à droite du texte correspondant au choix du menu qui est affiché dans un JScrollPane.
    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    package ihm.help;
     
    import ihm.FrameMain;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
     
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JSplitPane;
    import javax.swing.JTextPane;
    import javax.swing.ListSelectionModel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Document;
    import javax.swing.text.rtf.RTFEditorKit;
     
    public class FrameHelp extends JFrame {
     
    	private static final long serialVersionUID = 8271955189656078654L;
     
    	private FrameMain frame;
    	private JPanel panelMenu;
    	private JTextPane panelHelp;
    	private JList listHelp;
    	private JScrollPane scrollPaneHelp;
    	private RTFEditorKit rtfEditor = new RTFEditorKit();
     
    	private String[] menus = new String[]{"Step 1", "Step 2",
    			"Step 3", "Step 4", "Menu"};
     
    	public FrameHelp(FrameMain frame) {
    		this.frame = frame;
    		this.setTitle("Help");
    		this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    		this.setSize(new Dimension(600, 400));
    		panelMenu = new JPanel();
    		panelMenu.setLayout(new BorderLayout());
    		listHelp = new JList(menus);
    		listHelp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    		listHelp.setBorder(BorderFactory.createEmptyBorder());
    		listHelp.setBackground(getBackground());
    		listHelp.addListSelectionListener(new ListSelectionListener() {
    			public void valueChanged(ListSelectionEvent e) {
    				displayHelp();
    			}
    		});
     
    		JScrollPane scrollPaneMenu = new JScrollPane();
    		scrollPaneMenu.setViewportView(listHelp);
    		panelMenu.add(scrollPaneMenu);
     
    		scrollPaneHelp = new JScrollPane();
    		panelHelp = new JTextPane();
    		panelHelp.setEditable(false);
    		panelHelp.setBackground(getBackground());
    		panelHelp.setLayout(new BorderLayout());
    		scrollPaneHelp.setViewportView(panelHelp);
     
    		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
    				panelMenu, scrollPaneHelp);
    		splitPane.setOneTouchExpandable(true);
    		splitPane.setDividerLocation(100);
     
    		selectCurrentStep();
    		this.setContentPane(splitPane);
     
    		this.setVisible(true);
    	}
     
    	public void selectCurrentStep() {
    		if (frame.getTabPanelStep4() != null) {
    			listHelp.setSelectedIndex(3);
    		} else if (frame.getTabPanelStep3() != null) {
    			listHelp.setSelectedIndex(2);
    		} else if (frame.getTabPanelStep2() != null) {
    			listHelp.setSelectedIndex(1);
    		} else if (frame.getPanelStep1() != null) {
    			listHelp.setSelectedIndex(0);
    		} else {
    			listHelp.setSelectedIndex(4);
    		}
    	}
     
    	private void displayHelp() {
    		Document doc = panelHelp.getDocument();
    		try {
    			doc.remove(0, doc.getLength());
    		} catch (BadLocationException e) {
    			e.printStackTrace();
    		}
    		try {
    			switch (listHelp.getSelectedIndex()) {
    			case 0:
    				rtfEditor.read(new FileInputStream(new File("./help/step 1.rtf")), doc, 0);
    				break;
    			case 1:
    				rtfEditor.read(new FileInputStream(new File("./help/step 2.rtf")), doc, 0);
    				break;
    			case 2:
    				rtfEditor.read(new FileInputStream(new File("./help/step 3.rtf")), doc, 0);
    				break;
    			case 3:
    				rtfEditor.read(new FileInputStream(new File("./help/step 4.rtf")), doc, 0);
    				break;
    			case 4:
    				rtfEditor.read(new FileInputStream(new File("./help/menu.rtf")), doc, 0);
    				break;
    			}
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (BadLocationException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Le problème que j'ai, c'est qu'à chaque fois que je sélectionne dans le menu l'aide que je veux afficher, celle-ci s'affiche bien mais la scrollBar est positionnée tout en bas de la page alors que le mieux serait d'afficher d'abord le début de mon texte.
    Est-ce qu'il y a moyen de fixer la position de ma scrollBar verticale au départ?
    Ce problème était-il dû au Document et RTFEditor?

    Merci

  2. #2
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    panelHelp.setCaretPosition(0); ?

    (pas testé...)

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Par défaut
    ça marche avec le setCaretPosition(0)
    merci

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

Discussions similaires

  1. Scrollbar verticale d'un contrôle toujours en bas
    Par clem67 dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/01/2011, 22h33
  2. mettre la scrollBar verticale en bas
    Par stc074 dans le forum Applets
    Réponses: 3
    Dernier message: 30/09/2010, 18h46
  3. Problème ScrollBar verticale et horizontale dans datagridview
    Par moulefrite dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/02/2010, 20h34
  4. Supprimer la scrollbar verticale mais pas l'horizontale
    Par Prue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/07/2005, 11h24
  5. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06

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