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

 Java Discussion :

Faire une grille dans une jPanel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut Faire une grille dans une jPanel
    Bonjour,

    Je voudrais faire une grille de 30x30 dans une jPanel...
    J'ai fait quelques recherches, mais il y a pas mal de choses que je ne comprend pas...

    J'ai fait pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.awt.Graphics;
    import java.awt.Graphics2D;
     
    public class Dessin extends MaClasse {
     
    	Graphics g = jPanelCarte.getGraphics( );  
    	public void paintComponent(Graphics g){
    		super.paintComponents(g);
    	    Graphics2D g2 = (Graphics2D)g;   
    	   g2.drawLine(5,6,7,8);
    Mais cela ne dessine aucune ligne sur la fenêtre que j'ai fait dans MaClasse...

    Est-ce que je fais de la bonne façon ?

  2. #2
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    Salut,

    Ca devrait marcher normalement, Je viens d'essayer avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void paintComponent(Graphics g){
    	    Graphics2D g2d = (Graphics2D)g;
    	    g2d.drawLine(0,0, this.getWidth(), this.getHeight()-1);
    	    g2d.drawLine(0, this.getHeight()-1, this.getWidth(), 0);
    	}
    Ca marche sans soucis.

    Essaie de prendre un exemple plus significatif, dans ton exemple tu ne dessines qu'un pixel. Tu ne vas donc pas voir grand chose.

    PS:

    J'ai pas compris pourquoi tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Graphics g = jPanelCarte.getGraphics( );

    EDIT: J'avais pas fait attention mais ta classe MaClasse hérite bien d'un JPanel ?

  3. #3
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    ni meme pourquoi caster le Graphics en Graphics2D

  4. #4
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    J'avoue que je ne sais pas non plus pourquoi je fais ca moi aussi, dans tous les tutos que j'ai lus, Graphics était caster en Graphics2D...

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    EDIT: J'avais pas fait attention mais ta classe MaClasse hérite bien d'un JPanel ?
    Disons que MaClasse est une classe graphique, dans lequel j'ai mis tous les jPanel, les boutons, etc...
    En fait je ne comprend pas trop ta question, que cela signifie d'avoir une classe qui hérite d'un jPanel ?



    J'ai pas compris pourquoi tu fais :
    Code :
    Graphics g = jPanelCarte.getGraphics( );

    En fait je veux que la grille que je veux faire aille dans un jPanel...
    En fait c'est une carte, mon jPanel est un fond vert, je veux y mettre une grille, et après je devrais mettre des pions dans chaque case...




    Dans tous les cas j'ai testé ce que tu m'as donné, et ça n'affiche rien de plus sur mon interface...

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    C'est normal que cela ne fasse rien, ta méthode paintComponent ne marche que si l'objet supporte cette méthode. En gros si ta classe hérite d'un JComponent, alors tu peux aplliquer la méthode paintComponent, sinon ca ne fait rien.

    Perso, je créé une classe MonPanel qui hérite de JPanel et j'écris dans cette classe la méthode paintComponent .

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Dans la classe MaClasse (où j'ai tous les jPanel, les boutons...)
    j'ai à un endroit :

    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 JPanel getJPanelCarte() {
    		if (jPanelCarte == null) {
    			jPanelCarte = new JPanel();
    			jPanelCarte.setLayout(new GridBagLayout());
    			jPanelCarte.setBounds(new Rectangle(384, 0, 600, 600));
    			jPanelCarte.setBackground(Color.green);
    	paintComponent(Graphics g){
    		    Graphics g2d = (Graphics)g;
    		    g2d.drawLine(20,0, this.getWidth(), this.getHeight()-100);
    		    g2d.drawLine(0, this.getHeight()-50, this.getWidth(), 50);		
     
    		}
    		return jPanelCarte;

    Bon dans cette exemple je ne fais pas une grille, juste 2 traits qui se croisent...
    Mais cela ne fonctionne toujours pas !

  8. #8
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    Dans ta classe MaClasse tu as une méthode "getJPanelCarte()" qui renvoi un JPanel.
    Dans cette méthode tu appels la méthode "paintComponent", elle va donc s'appliquer à un objet de classe "MaClasse". Ca ne va donc pas marcher...

    Je ne comprends pas pourquoi tu testes "jPanelCarte==null", ton jPanelCarte est un attribut ? Dans ce cas pourquoi avoir une fonction pour le récupérer ?

    Mon exemple complet:

    Ma classe Main:

    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
     
    import javax.swing.JFrame;
     
    @SuppressWarnings("serial")
    class Main extends JFrame{
     
    	public static void main(String[] args){
    		new Main();
    	}
     
    	public Main(){
     
    		MonPanel panel = new MonPanel();
     
    		//Ajout du panel
            add(panel);
     
     
            //Parametre de la frame
            setSize(600, 480);
            setTitle("Exemple");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setVisible(true);
    	}
     
    }
    Ma classe MonPanel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class MonPanel extends JPanel{
     
    	public void paintComponent(Graphics g){
    	    g.drawLine(0,0, this.getWidth(), this.getHeight()-1);
    	    g.drawLine(0, this.getHeight()-1, this.getWidth(), 0);
    	}
     
    }

  9. #9
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    (juste comme ca paintComponent est protected pas public)

    Sinon je suis tous a fait d'accord avec laurentze c'est comme ca qu'il faut faire si tu veux un panel qui se dessine lui meme

  10. #10
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Je suis désolé mais je ne comprend pas...

    Je suis avec Eclipse...

    Quand j'exécute ma classe Main, il me montre ce que j'ai fait sur ma classe Main, avec des boutons, des panels, etc... et rien dans le panel dans lequel je veux mettre ma grille...

    Et quand j'exécute ma classe MonPanel, il me montre une fenêtre avec ma grille, mais aucune trace de ma jFrame avec mes boutons...

  11. #11
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Non c'est bon j'ai réglé mon problème...

    En tout cas merci bien laurentze...

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/01/2015, 19h37
  2. Recuperer une valeur dans une grille sur une image
    Par gwal21 dans le forum Images
    Réponses: 3
    Dernier message: 26/02/2011, 23h41
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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