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 :

Modification rectangle / ovale et vice versa


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Par défaut Modification rectangle / ovale et vice versa
    Bonjour,

    J'ai pour étudier fait de tête un script censé afficher un coup un dessin ovale un coup un dessin rectangulaire dans le panneau mais lors du clic sur un des deux boutons une erreur se produit dans la fenetre console.

    Aussi à quoi sert la méthode PaintComponent(Graphics g) ???

    Merci d'avance pour votre aide

    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
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    class MaFenetre extends JFrame implements ActionListener
    {
    	public MaFenetre()
    	{
    		setTitle("Titre de ma fenêtre");
    		setBounds(150,150,600,600);
    		setVisible(true);
     
    		Container page = getContentPane();
     
    		Panneau pan = new Panneau();
    		pan.setBackground(Color.green);
    		page.add(pan);
     
     
    		rectangle= new JButton("Rectangle");
    		page.add(rectangle, "North");
    		rectangle.addActionListener(this);
     
    		ovale = new JButton("Ovale");
    		page.add(ovale, "South");
    		ovale.addActionListener(this);
    	}
     
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    		if(e.getSource() == ovale) pan.dessinOvale();
    		if(e.getSource() == rectangle) pan.dessinRectangle();
    		pan.repaint();
    	}
     
    	private Panneau pan;
    	private JButton ovale, rectangle;
    }
     
    class Panneau extends JPanel
    {
    	public void paintComponent(Graphics g)
    	{
    	super.paintComponent(g);
    	if(ovale) g.drawOval(80,20,120,60);
    	if(rectangle) g.drawRect(80,20,120,60);
    	}
    	public void dessinOvale() {rectangle = false; ovale = true;}
    	public void dessinRectangle() {rectangle = true; ovale = false;}
    	public boolean rectangle = false, ovale = false;
    }
     
    public class babar
    {
    	public static void main(String args[])
    	{
    		MaFenetre f = new MaFenetre();
    	}
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    "une erreur se produit" --> si tu nous disais "quelle erreur" ?
    quand à paintComponent, étonnement, ça sert à peindre le composant...

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    C'est ton objet pan qui est null. Car dans public MaFenetre() tu ne fait pas référence a l'attribut de classe pan, du coup il n'est pas instancié.

    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    class MaFenetre extends JFrame implements ActionListener {
     
    	public static void main(String args[]) {
    		MaFenetre f = new MaFenetre();
    	}
     
    	private Panneau pan;
    	private JButton ovale, rectangle;
     
    	public MaFenetre() {
    		setTitle("Titre de ma fenêtre");
    		setBounds(150, 150, 600, 600);
    		setVisible(true);
     
    		Container page = getContentPane();
    		page.setLayout(new BorderLayout());
     
    		pan = new Panneau();
    		pan.setBackground(Color.green);
    		page.add(pan, "Center");
     
    		rectangle = new JButton("Rectangle");
    		page.add(rectangle, "North");
    		rectangle.addActionListener(this);
     
    		ovale = new JButton("Ovale");
    		page.add(ovale, "South");
    		ovale.addActionListener(this);
    	}
     
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		if (e.getSource() == ovale)
    			pan.dessinOvale();
    		if (e.getSource() == rectangle)
    			pan.dessinRectangle();
    		pan.repaint();
    	}
     
     
    }
     
    class Panneau extends JPanel {
     
    	public boolean rectangle = false, ovale = false;
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		if (ovale)
    			g.drawOval(80, 20, 120, 60);
    		if (rectangle)
    			g.drawRect(80, 20, 120, 60);
    	}
     
    	public void dessinOvale() {
    		rectangle = false;
    		ovale = true;
    	}
     
    	public void dessinRectangle() {
    		rectangle = true;
    		ovale = false;
    	}
     
    }

Discussions similaires

  1. [getRequestDispatcher] de post à get (et vice versa)
    Par Kimael dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/11/2008, 09h36
  2. [SimpleXML] Comment passer de XML à MySQL et vice-versa avec PHP ?
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/12/2005, 21h42
  3. Passer d'un fichier Excel vers mon PRG VB et vice versa
    Par DAN68 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2005, 13h42
  4. [PyMedia] Decomposer un film en image ...et Vice versa
    Par parp1 dans le forum Programmation multimédia/Jeux
    Réponses: 3
    Dernier message: 19/06/2005, 15h23
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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