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 :

Probleme avec une JScrollBar


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut Probleme avec une JScrollBar
    Bonjour j'aurai une petite question. Je v essayé d'etre clair. Voici le bout de code qui m'embete :

    this est un JPanel
    arbre est un JPanel (de taille fixe)
    jsb est une JScrollBar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		System.out.println(getSize().getWidth()+" - "+arbre.getWidth());
    		if (getWidth() >= arbre.getWidth()) {
    			jsb.setVisible(false);
    		} else {
    			jsb.setVisible(true);
    			jsb.setVisibleAmount(this.getWidth());		
    			jsb.setMaximum(arbre.getWidth());
    		}
    	}
    Le probleme vient du fait que getWidth() renvoie toujours le même résultat une fois que jsb.setVisible(false) a été effectué. Donc il ne peut plus faire de jsb.setVisible(true) même si je réduit ma fenêtre.

    Est ce que qq1 voit pqoi il me fait ca?
    Merci d'avance
    a+

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Je viens de me rendre compte que ca vient du fait que la méthode paintComponent n'est plus appelé une fois que la JScrollBar a disparu.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Bon je v essayé de vous expliquer ce que je veux obtenir, peut etre pourrez vous m'aider.

    Je veux placer un JPanel de taille fixe dans un container quelconque de taille plus petite ou plus grande. Quand le container est plus grand, il n'y a pas de scrollbar et quand il est plus petit elle apparait (normale quoi).

    Quand je passe par un JScrollPane, les scrollbar n'apparaissent pas.

    J'avais reussi à faire ce que je voulais en passant par un JPanel qui contiant mon premier JPanel est une JScrollBar, mais quand la barre disparai, y a tout qui déconne (comme je l'ai expliqué précédemment)

    Peut etre voyez vous une autre solution
    Merci
    a+

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Normalement, je pense que tu n'as pas à mettre tout cela dans paintComponent pour activer les barres de défilement : cela devrait marcher tout seul.

    Quelques pistes à explorer :
    - mettre le JScrollPane dans un JPanel en BorderLayout
    - donner une dimension explicite au JScrollPane

    Sinon, si tu es vraiment bloqué, tu peux poster un code compilable, exécutable (c'est-à-dire avec un "main") et réduit au strict minimum pour montrer le problème, et nous pourrons regarder : les questions de JScrollPane sont parfois délicates.

    Nicolas

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    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
    import javax.swing.*;
    import java.awt.*;
     
    public class Test1 extends JFrame{
     
    	public Test1() {
    		super ("test");
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	public static void main (String arg[]) {
    		Test1 frame = new Test1();
    		frame.setSize(100,100);
     
    		JPanel jp1 = new JPanel();
    		jp1.setSize(500,500);
    		jp1.setBorder(BorderFactory.createLineBorder(Color.RED));
     
    		JPanel jp2 = new JPanel();
    		jp2.setLayout(null);
    		jp2.add(jp1);
     
    		JScrollPane jsp1 = new JScrollPane(jp2);
     
    		frame.getContentPane().add(jsp1,BorderLayout.CENTER);
    		frame.setLocation(300,300);
    		frame.setVisible(true);
    	}
     
    }
    Voila g essayé de représenté ce que je voulais obtenir.
    Le cadre rouge est l'élément de référence pour mes scrollbar.
    Elle doivent apparaitre quand le cadre rouge n'est pas visible entièrement.

  6. #6
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    ce serai pas ca que tu essaie de faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scroll = new JScrollPane(ton_panel_que_tu_veux_dans_leScrollPane,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    regarde les ScrollPaneConstants, tu peu les afficher toujours, jamais, si besoin, j espere avoir compis ton pb. Et la pas besoin de joué avec les repaint ou paint...

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Effectivement le probleme pourrai se régler de cette facon avec un autre composant que le JPanel.

    Mais le probleme avec le JPanel,c'est qu il s'adpate au JScrollPane.
    Donc le JPanel rétraici au lieu de garder sa taille et de ce fait le JScrollPane n'affiche pas les barre.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Apparemment, il fallait un setPreferredSize :

    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
    import javax.swing.*;
    import java.awt.*;
     
    public class Test1 extends JFrame{
     
        public Test1() {
            super("test");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        public static void main(String arg[]) {
            Test1 frame = new Test1();
            frame.setSize(100,100);
     
            JPanel jp1 = new JPanel();
            jp1.setSize(500,500);
            jp1.setBorder(BorderFactory.createLineBorder(Color.RED));
     
            JPanel jp2 = new JPanel();
            jp2.setLayout(null);
     
            jp2.add(jp1);
            // jp2.setSize(500,500); // SUPPRESSION
            jp2.setPreferredSize(new Dimension(500,500)); // AJOUT
     
            JScrollPane jsp1 = new JScrollPane(jp2);
     
            frame.getContentPane().add(jsp1,BorderLayout.CENTER);
            frame.setLocation(300,300);
            frame.setVisible(true);
        }
    }
    Nicolas

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Merci c cool.
    J'avais tout essayé sauf ca.

    a+

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

Discussions similaires

  1. PROBLEME AVEC UNE TABLE INTERBASE
    Par barro dans le forum InterBase
    Réponses: 1
    Dernier message: 22/09/2004, 08h16
  2. [C#] [Oracle] Probleme avec une procedure stockée
    Par sronin1 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2004, 19h04
  3. Probleme avec une table vide
    Par king dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/03/2004, 14h24
  4. au secour probleme avec une requete...
    Par soufiane59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/09/2003, 10h28
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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