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 paint JPanel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Par défaut Problème paint JPanel
    Bonjour bonjour !
    Après avoir recherché un peu partout sur internet et n'ayant trouvé aucune solution je me tourne vers ce forum.

    J'explique donc mon problème :

    J'ai une JFrame dans laquelle j'ai un JMenu et 2 Jpanel (Jpanel avec boutons et Jpanel pour dessiner)

    Le but de l'application étant de dessiner des formes dans le Jpanel de dessin. Mais le problème est que lors du paint au lieu de tracer la ligne dans le JPanel il la trace dans la JFrame donc en gros par dessus tout.

    Merci d'avance !

    Voilà le 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
    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    /*
     * appli_dessin.java
     *
     * Created on 09-mai-2011, 13:37:56
     */
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    /**
     *
     * @author Corentin
     */
    public class appli_dessin extends javax.swing.JFrame {
     
        /** Creates new form appli_dessin */
        public appli_dessin() {
            initComponents();
        }
    Color couleur = Color.lightGray;
    Point anchor;
    Point currentpoint;
    Point starts[] = new Point[500];
    Point ends[] = new Point[500];
    int currline = 0;
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
     
     
        private void bout_couleursActionPerformed(java.awt.event.ActionEvent evt) {                                              
    couleur = JColorChooser.showDialog(getContentPane(),"Choisissez une couleur",couleur);
    if(couleur == null)
        couleur = Color.lightGray;
        }                                             
     
        private void couleursMouseClicked(java.awt.event.MouseEvent evt) {                                      
    couleur = JColorChooser.showDialog(getContentPane(),"Choisissez une couleur",couleur);
    if(couleur == null)
        couleur = Color.lightGray;
        }                                     
     
        private void PdessinMousePressed(java.awt.event.MouseEvent evt) {
    int x = evt.getX();
    int y = evt.getY();
    anchor = new Point(x,y);
        }
     
        private void PdessinMouseReleased(java.awt.event.MouseEvent evt) {
    int x = evt.getX();
    int y = evt.getY();
    addline(x,y);
        }
     
        private void PdessinMouseDragged(java.awt.event.MouseEvent evt) {
    int x = evt.getX();
    int y = evt.getY();
    currentpoint = new Point(x,y);
    repaint();
        }
     
        void addline(int x, int y){
        starts[currline] = anchor;
        ends[currline] = new Point(x,y);
        currline++;
        currentpoint = null;
        anchor = null;
        repaint();
    }
     
        public void paint(Graphics g){
        super.paint(g);
     
        for(int i = 0 ; i < currline ; i++){
            g.drawLine(starts[i].x, starts[i].y,ends[i].x,ends[i].y);
        }
        g.setColor(Color.blue);
        if(currentpoint != null)
            g.drawLine(anchor.x,anchor.y,currentpoint.x,currentpoint.y);
    }
        /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new appli_dessin().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify
        private javax.swing.JPanel Pbout;
        private javax.swing.JPanel Pdessin;
        private javax.swing.JButton bout_couleurs;
        private javax.swing.JButton bout_libre;
        private javax.swing.JButton bout_lignes;
        private javax.swing.JButton bout_ovales;
        private javax.swing.JButton bout_rectangles;
        private javax.swing.JButton bout_triangles;
        private javax.swing.JMenu couleurs;
        private javax.swing.JMenuItem enregistrer;
        private javax.swing.JMenu fichier;
        private javax.swing.JMenu formes;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem libre;
        private javax.swing.JMenuItem lignes;
        private javax.swing.JMenuItem ouvrir;
        private javax.swing.JMenuItem ovales;
        private javax.swing.JMenuItem rectangles;
        private javax.swing.JMenuItem triangles;
        // End of variables declaration
     
    }

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour faire simple, ce n'est pas le paint de la JFrame qu'il faut redéfinir mais la méthode paintComponent de ton JPanel.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Par défaut
    Hmm...il y a moyen que tu expliques un peu comment?
    Pcq j'ai déjà essayé plusieurs façons mais sans résultat :/

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Par défaut
    Personne d'autre pour une petite aide?

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Par défaut
    voila un petit example pour dessiner dans un 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
    37
    38
    39
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.GridLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class MainClass extends JPanel {
     
      Color color;
     
      public MainClass(Color color) {
        this.color = color;
      }
     
      public void paintComponent(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        g.setColor(color);
        g.drawOval(0, 0, width, height);
      }
     
      public static void main(String args[]) {
        JFrame frame = new JFrame("Oval Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
        frame.setLayout(new GridLayout(2, 2));
     
        Color colors[] = { Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW };
        for (int i = 0; i < 4; i++) {
          MainClass panel = new MainClass(colors[i]);
          frame.add(panel);
        }
     
        frame.setSize(300, 200);
        frame.setVisible(true);
      }
    }

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Par défaut
    il te faut savoir comment faire la function PaintComponent dans un autre fichier nommé par exemple "panelDessin.java"
    Puis tu dois implémenter ce genre de code dans ce fichier.
    Et enfin tu déclare ton JPanel dessin, que tu viens de créer dans ton JFrame, de type "panelDessin" (pour qu'il hérite,disons, du fichier panelDessn)

    j'espère etre clair sur ce point
    Bonne chance

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

Discussions similaires

  1. problème affichage JPanel dans un JPanel
    Par rburney dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/04/2008, 11h36
  2. [Form Builder] problème de JPanel et JTable
    Par syrius31 dans le forum NetBeans
    Réponses: 2
    Dernier message: 19/07/2007, 14h47
  3. Problème Paint() et jList
    Par lesafir dans le forum Composants
    Réponses: 2
    Dernier message: 27/02/2007, 13h55
  4. [VB.Net 2005] - Problème Paint UserControl
    Par Flibustier dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/10/2006, 11h47
  5. Problème repaint JPanel
    Par anthony62 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/09/2006, 15h09

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