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 :

dessiner sans dépasser


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut dessiner sans dépasser
    Bonjour tout le monde,
    Voilà mon problème j'aimerais dessiner dans un jpanel de la façon suivante :
    dès lors que mon dessin s'effectue si les dimensions de mon dessin sont supérieurs au dimension du jpanel, mon dessin ne "sort" pas du jpanel pour continuer dans ma jframe et une jscrollbar s'affiche. Voilà pour l'exposition du problème j'espère ne pas avoir été trop vague et cela doit surement être une question très c***e mais qui m'embete depuis un moment.
    Je vous remercie.
    Cordialement,
    Fterm

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut Bonjour
    en fait c'est pas très clair comme énoncé.

    Ton problème c'est que quand tu dessines, ton dessin ne rentre pas dans ton jpanel, c'est ca?
    Et donc tu voudrais mettre un JScrollPane dans ce cas là?

    Si j'ai bien compris (ca je n'en suis pas sur), il te suffit de mettre un JScrollPane tout le temps et si ton dessin est plus grand que ton JPanel, le scroll s'activera tout seul.

    Ai-je répondu un peu à ta question?

    Cdlt

  3. #3
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Il faudra réajuster la taille du JPanel au besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    drawingArea.setPreferredSize(...);
    drawingArea.revalidate();

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    Merci pour les réponses.
    En faite mon probleme c'est que mon JScrollPanel n'ajoute pas la ScrollBar lorsque je dessine a partir du JScrollPanel et donc le dessin sort des dimensions du JScroll alors que je ne le souhaite pas. Est ce un peu plus claire ? Je ne souhaite pas redimensionné ma zone de dessin tout simplement parce que le dessin risque d'être assez grand. Voilà Merci a tous !
    Cordialement,
    fterm

  5. #5
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Un peu de code pour mieux comprendre.
    As tu bien ajouté le panel de dessin au JScrollPane ?
    Si tu ne veux pas redimensionner ta zone de dessin, il faut lui prévoir une taille suffisamment grande dès le départ.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    code de la 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
     
    /**
     *
     * @author fterm
     */
    import java.awt.event.*;
     
    public class testZone extends javax.swing.JScrollPane implements ActionListener{
     
        private javax.swing.JButton bouton;
        private int choix;
     
        public testZone(){
            super();
            this.setSize(new java.awt.Dimension(200,200));
            this.setLayout(null);
            choix = 0;
            bouton = new javax.swing.JButton("test");
            bouton.setBounds(30, 50, 60, 70);
            bouton.addActionListener(this);
            this.add(bouton);
            this.setVisible(true);
     
        }
        public void actionPerformed(ActionEvent e){
            if(e.getSource()=="test"){
             choix = 1;
             this.repaint();
            }
        }
        public void paint(java.awt.Graphics g){
            if(choix ==1){
                g.drawLine(200, 200, 1100, 1100);
            }
        }
    }
    code de l

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    encore dsl (si possible à un modo d'éditer)

    le code de la jframe :
    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
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package ihm;
     
    /**
     *
     * @author fterm
     */
    public class testIHM extends javax.swing.JFrame{
     
        private testZone zone;
     
        public testIHM(){
            super();
            this.setSize(new java.awt.Dimension(600,400));
     
            zone = new testZone();
            this.setContentPane(zone);
        }
     
    }

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut Bonjour
    Soit je ne le vois pas soit il manque un JPanel quelque part.

    Si tu veux que ton JScrollPane scrolle quelque chose, il te faut lui mettre un panel a l'intérieur sur lequel tu vas desssiner.

    Donc faudrait que ta classe testZone étende JPanel (ou jComponent)
    et dans ta classe JFrame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    zone = new testZone();
    //Création d'un JScrollPane en y ajoutant ton panel de dessin
    JScrollPane scrollPane = new JScrollPane(zone )
    this.setContentPane(scrollPane );
    Pour moi ca seré un truc comme ca

    Cdlt

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    Ok je vois ce que tu veux dire.
    Je vais essayer ca tout de suite. Merci.
    Cordialement,
    fterm

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut rebonjour
    tant que tu y es, vu que tu fais du Swing, surcharge plutôt la méthode paintComponent et pas paint (awt).

    Cdlt

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    Merci pour toutes ces réponses rapides. Seulement le problème perssiste voilà le code de la frame :
    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
     
    public class testIHM extends javax.swing.JFrame{
     
        private testZone zone;
        private javax.swing.JScrollPane scrollPane;
     
        public testIHM(){
            super();
            this.setSize(new java.awt.Dimension(600,400));
            zone = new testZone();
            scrollPane = new javax.swing.JScrollPane(zone);
            this.setContentPane(scrollPane);
        }
        public static void main(String[] arg){
            testIHM toto = new testIHM();
            toto.setVisible(true);
        }
    }
    et le code du JPanel :
    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
     
    import java.awt.event.*;
     
    public class testZone extends javax.swing.JPanel implements ActionListener{
     
        private javax.swing.JButton bouton;
        private int choix;
     
        public testZone(){
            super();
            this.setSize(new java.awt.Dimension(200,200));
            this.setLayout(null);
            choix = 0;
            bouton = new javax.swing.JButton("test");
            bouton.setBounds(30, 50, 60, 70);
            bouton.addActionListener(this);
            this.add(bouton);
            this.setVisible(true);
     
        }
        public void actionPerformed(ActionEvent e){
            if(e.getSource()=="test"){
             choix = 1;
             this.repaint();
            }
        }
        public void paintComponent(java.awt.Graphics g){
            if(choix ==1){
                g.drawLine(200, 200, 1100, 1100);
            }
        }
    }
     
    voila quelqu'un a t il une idée ?
    Cordialement,
                      fterm

  12. #12
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    essaie déjà avec ca :

    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
     
     
        public void actionPerformed(ActionEvent e){
            if(e.getSource()==bouton){
             choix = 1;
             this.repaint();
            }
        }
        public void paintComponent(java.awt.Graphics g){
            super.paintComponent(g);
            System.out.println("choix : " + choix);
            if(choix ==1){
                g.drawLine(200, 200, 1100, 1100);
            }
        }
    dans la classe testZone

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    choix reste a 0, aurai je besoin d'un accesseur pour modifier la valeur de ma variable ? De plus j'ai cru comprendre qu'il fallait redéfinir a chaque fois la taille de mon panel et surcharger la méthode getPreferedSize pour que la scrollBar s'active et fonctionne correctement.
    Cordialement,
    fterm

  14. #14
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    avec le code que tu as fourni, ton trait n'était jamais affiché! tu avais ca avant j'imagine?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    oui mais j'ai remarqué une chose supplémentaire, c'est qu'il n'ya pas d'interaction entre le bouton et la fenêtre.
    Cordialement,
    fterm

  16. #16
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    qu'est-ce que tu veux dire ?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    et bien lorsque je clique sur le bouton, le repaint qui devrait s'effectuer ne s'effectue (bien que le bouton soit ajouté au niveau de l'actionListener et le repaint appelé), je bloque serieusement... Enfin bref Merci pour toute cette aide, je vais continuer à chercher une solution.
    Cordialement,
    fterm

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    Finalement j'ai trouvé ce qui ne va pas c'était le test dans le actionPerformed. Seulement un soucis résolu que voila un nouveau problème qui apparait les scrollBars de mon JScrollPane ne me permettent pas de me déplacer quand mon dessin est trop grand pour ma page. Est ce un problème de layout ? Merci à tous pour l'aide.
    Cordialement,
    fterm

  19. #19
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 914
    Billets dans le blog
    54
    Par défaut
    Plutot un probleme de Size, MinimumSize ET/OU PreferredSize mal definie sur le composant en question (apres tout sinon comment le JScrollPane saurait s'il faut afficher les barres de scroll ou de combien il faut scroller quand on les deplace).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut Bonjour
    En testant vite fait ton code, le trait s'affiche correctement dès que tu cliques une fois sur le bouton (vu qu tu appelles repaint à l'intérieur) et mon choix passe bien à 1.
    Pour le scroll j'ai pas encore regardé.

    Cdlt

    Edit: désolé mon intervention est obsolète, problème de rafraichissement de message

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Dessiner sans passer par paint()
    Par Invité dans le forum Android
    Réponses: 8
    Dernier message: 07/11/2009, 00h17
  2. Inclure un dessin sans perte de qualité
    Par Christophe Genolini dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 17/05/2009, 18h00
  3. [TImage]Dessiner sans écraser ?
    Par Bleys dans le forum Delphi
    Réponses: 7
    Dernier message: 22/03/2007, 15h12
  4. [Panel]dessiner sans la méthode paint()
    Par paolo2002 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/10/2006, 03h35
  5. [C# 2.0] Modifier un dessin sans tout redessiner
    Par falcon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/10/2006, 17h48

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