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

AWT/Swing Java Discussion :

Graphics et JScrollPane


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut Graphics et JScrollPane
    Bonjour

    La question a été posée mais malgré ma recherche, je n'ai pas encore trouvé de solution.
    dans un JSplitPane, j'ai un premier panneau affichant un dessin et dans le 2ème, un tableau JTable. Pas de souci pour le deuxième panneau. Voici la méthode qui construit le premier panneau (celui avec le dessin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private JScrollPane getJScrollPaneDessin(){
            if (jScrollPaneDessin == null){
            	jScrollPaneDessin = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            	jScrollPaneDessin.setViewportView(getJPanelDessin());  
            }
            return jScrollPaneDessin;
        }
     
        public JPanel getJPanelDessin(){
            if(jPanelDessin == null)
                jPanelDessin = new DessinView();
            return jPanelDessin;
        }
    Et voici un extrait de DessinView où je dessine :
    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
     
    DessinView(){
            setBackground(Color.WHITE);
        	defaultDimJPCR = new Dimension(800,600);  
            defaultDimWindow = new Dimension(740,540);
            setLayout(null);
            primersPairEns = ProjectWindow.activateProject.getResults();
            pairsSelectedToPrint = new int[primersPairEns.getNumberPairs()];
            repaint();
        }
     
    public void paintComponent(Graphics g){
            super.paintComponent(g);
            graph = (Graphics2D)g;
    /*Calcul super savant pour dessiner*/
    }
    Mon problème est le suivant : ma barre de navigation verticale s'affiche quand il faut et comme il faut. Mais il n'en est rien pour la barre de navigation horizontale.
    Comment se fait-ce ?

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Ton JPanel est il plus large que le scrollpane ? Je crois que les JScrollPane n'affichent les scroll bar que lorsque cela est nécessaire, donc que lorsque le contenu "dépasse".
    Il me semble que si tu fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
    ta barre de navigation horizontal devrait apparaitre (non testé).
    Bonne chance.

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Je dirais même que tu crées des dimensions, mais tu ne les utilises pas ??

    Il faut que le JPanel ait une taille préférée (setPreferredSize), sinon il prend la taille du JScrollPane (donc pas de scrollBars dans ce cas).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Bonjour

    Merci de vos réponses et désolé du retard.
    Ben, c'est pas fameux !
    Voici les modifications que j'ai apporté :
    Dans une classe ResultView :
    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
     
    public ResultView(){    
        	this.setLayout(new java.awt.BorderLayout());
            jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, getJScrollPaneDessin(), getJScrollTable());
        	this.add(jSplitPane, BorderLayout.CENTER);
        	setVisible(true);
        } 
     
    private JScrollPane getJScrollPaneDessin(){
            if (jScrollPaneDessin == null){
            	jScrollPaneDessin = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            	jScrollPaneDessin.setPreferredSize(new Dimension(50, 100));
            	jScrollPaneDessin.setViewportView(getJPanelDessin());  
            }
            return jScrollPaneDessin;
        }
     
        public void adjustmentValueChanged(AdjustmentEvent e){}  
     
        public JPanel getJPanelDessin(){
            if(jPanelDessin == null){
                jPanelDessin = new DessinView();
                jPanelDessin.setPreferredSize(new Dimension(100,100));
            }
            return jPanelDessin;
        }
    Et voici la classe DessinView :
    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
     
    DessinView(){
            setBackground(Color.WHITE);
        	defaultDimJPCR = new Dimension(800,600);  
            defaultDimWindow = new Dimension(740,540);
            setLayout(null);
            this.setPreferredSize(new Dimension(100, 100));
        	primersPairEns = ProjectWindow.activateProject.getResults();
            pairsSelectedToPrint = new int[primersPairEns.getNumberPairs()];
            repaint();
            System.out.println(""+this.getWidth()+" * "+this.getHeight());
        }
     
    public void paintComponent(Graphics g){
            super.paintComponent(g);
            graph = (Graphics2D)g;
    /*Super bô dessin*/
    }
    Bon, j'ai toujours pas ma barre de défilement horizontale. Autre constatation, je veux obtenir la taille de mon JPanel de dessin et j'obtiens 0 * 0 .

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    La taille de ta fenêtre est (0; 0) tant que tu ne l'as pas rendue visible...

    [EDIT]
    C'est quoi ton prblème exactement avec ton JScrollPane?
    Tu ne veux pas que la barre horizontale s'affiche? Tu veux que la barre horizontale s'affiche? Elle ne s'affiche pas correctement?...

    Si elle ne s'affiche pas, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jScrollPaneDessin.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Hello

    J'ai donc ajouté cela dans ma méthode pour afficher mon panel de dessin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private JScrollPane getJScrollPaneDessin(){
            if (jScrollPaneDessin == null){
            	jScrollPaneDessin = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            	jScrollPaneDessin.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            	jScrollPaneDessin.setPreferredSize(new Dimension(50, 100));
            	jScrollPaneDessin.setViewportView(getJPanelDessin());  
            }
            return jScrollPaneDessin;
        }
    Ok, j'ai ma barre de défilement. Mais mon dessin est large et malgré cela, je n'ai toujours pas de curseur pour me déplacer horizontalement

    Merci encore de votre aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Bug: JScrollPane et Graphics
    Par Elbakin dans le forum Composants
    Réponses: 2
    Dernier message: 03/02/2010, 12h22
  2. ajout d'un Graphics dans un jScrollPane dynamiquement
    Par rocel dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 15/05/2008, 16h47
  3. Problème Graphics dans JScrollPane
    Par boudreau_benjamin dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 15/10/2006, 20h55
  4. JScrollPane dans une JInternalFrame contenant un graphic
    Par Sirkiller dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/06/2006, 11h13
  5. JScrollPane Graphics/ JPanel
    Par daedric dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 26/05/2006, 12h28

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