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 :

Dessiner un cercle


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 55
    Par défaut Dessiner un cercle
    Bonjour, j'aimerai dessiner un cercle sur un panneau (ici nommé panneau) et je ne sais pas trop comment faire. J'ai essayé d'utiliser la méthode paintComponent mais rien ne s'affiche.
    Voici mon programme:
    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
    	import javax.swing.*;
    	import java.awt.*;
    	import java.awt.event.*;
        import javax.swing.event.*;
     
     
    	class FenBouton extends JFrame implements ListSelectionListener
    	{public FenBouton ()
    	{setTitle("frame");
    	setSize (300,200);
    	Container contenu=getContentPane();
    	bVert= Box.createHorizontalBox();
    	liste = new JList (reynolds);
    	liste.addListSelectionListener(this);
    	contenu.add(bVert);
    	panneau=new JPanel();
    	panCom= new JPanel();
    	panneau.setBackground(Color.yellow);
    	panneau.setPreferredSize(new Dimension(300,100));
    	contenu.add(panneau);
    	contenu.add(panCom,"South");
    	Bouton1=new JButton("Start");
    	Bouton2=new JButton("Stop");
    	bVert.add(Bouton1);
    	bVert.add(Bouton2);
    	EcouteBouton1 ecout1 =new EcouteBouton1();
    	EcouteBouton2 ecout2 =new EcouteBouton2();
    	Bouton1.addActionListener(ecout1);
    	Bouton2.addActionListener(ecout2);
    	panCom.setLayout(new GridLayout(1,4,5,5) );
    	panCom.add(Bouton1);
    	panCom.add(Bouton2);
    	panCom.add(liste);
    	panneau.repaint();
    	titre = new JLabel("Nombre de Reynolds");
    	panCom.add(titre);
    	}
    	public void valueChanged (ListSelectionEvent e)
    	{if (!e.getValueIsAdjusting())
    	{System.out.println ("Reynolds sélec");
    	Object[] valeurs=liste.getSelectedValues();
    	for (int i =0; i<valeurs.length; i++)
    		System.out.println( (String) valeurs[i]);
    	}
    	}
     
     
    	private Box bVert;
    	private JButton Bouton1, Bouton2;
    	private JPanel panneau, panCom;
    	private String[] reynolds = {"20","50","200"};
    	private JList liste;
    	private JLabel titre;
    	}
    	class EcouteBouton1 implements ActionListener
    	{public void actionPerformed (ActionEvent ev)
    	{
    		System.out.println("Start");
    	}	
    	}
    	class EcouteBouton2 implements ActionListener
    	{public void actionPerformed (ActionEvent ev)
    	{
    		System.out.println("Stop");
    	}	
        }
    	//DESSINER UN CERCLE
    	class Dessin extends JPanel
    	{public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		g.drawOval(50,50,50,50);
    	}
    	}
     
    	public class Main
    	{public static void main (String args[])
    	{JFrame fen = new FenBouton();
    	fen.setVisible(true);}
    	}
    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Par défaut
    Salut,

    J'ai essayé d'utiliser la méthode paintComponent
    C'est bien ça.

    mais rien ne s'affiche
    Si rien ne s'affiche c'est que à aucun moment tu n'ajoute le panel Dessin au conteneur (pense à indenter ton code, ça donne pas envie de lire), il ne peux donc pas s'afficher.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panneau.setLayout(new BorderLayout());
    panneau.add(new Dessin(), BorderLayout.CENTER);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 55
    Par défaut
    merci de ton aide mais j'ai un nouveau pb. Mon background du panneau d'affichage n'apparaît plus et j'aimerais savoir comment colorer l'intérieur du cercle svp.
    Voici le programme modifié et commenté (c'est vrai que j'ai abusé sur le précédent)
    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
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    import javax.swing.event.*;
     
    public class Fenetre extends JFrame implements ListSelectionListener{
        //Appel de la classe dessin
        Dessin des= new Dessin();
     
    	public Fenetre(){
    	setTitle("Von Karman Turbulence");
    	setSize (300,300);
    	Container contenu=getContentPane();
    	bHor= Box.createHorizontalBox();
    	contenu.add(bHor);
    	//Panneau d'affichage
    	panneau=new JPanel();
    	panneau.setBackground(Color.BLUE);
    	contenu.add(panneau);
    	// Dessin du cercle
    	panneau.setLayout(new BorderLayout());
    	panneau.add(des, BorderLayout.CENTER);
     
    	//Panneau de communication
    	panCom= new JPanel();
    	panCom.setPreferredSize(new Dimension(300,100));
    	contenu.add(panCom,"South");
    	   //Bouton pour PanCom
    	Bouton1=new JButton("Start");
    	Bouton2=new JButton("Stop");
    	bHor.add(Bouton1);
    	bHor.add(Bouton2);
    	EcouteBouton1 ecout1 =new EcouteBouton1();
    	EcouteBouton2 ecout2 =new EcouteBouton2();
    	Bouton1.addActionListener(ecout1);
    	Bouton2.addActionListener(ecout2);
    	panCom.add(Bouton1);
    	panCom.add(Bouton2);
    	   //liste pour panCom
    	liste = new JList (reynolds);
    	liste.addListSelectionListener(this);
    	panCom.add(liste);
    	titre = new JLabel("Nombre de Reynolds");
    	panCom.add(titre);
    	this.setVisible(true);
    	}
     
    	public void valueChanged (ListSelectionEvent e)
    	{if (!e.getValueIsAdjusting())
    	{System.out.println ("Reynolds sélec");
    	Object[] valeurs=liste.getSelectedValues();
    	for (int i =0; i<valeurs.length; i++)
    		System.out.println( (String) valeurs[i]);
    	}
    	}
    	private Box bHor;
    	private JButton Bouton1, Bouton2;
    	private JPanel panCom, panneau;
    	private String[] reynolds = {"20","50","200"};
    	private JList liste;
    	private JLabel titre;
     
    	class EcouteBouton1 implements ActionListener
    	{public void actionPerformed (ActionEvent ev)
    	{
    		System.out.println("Start");
    	}	
    	}
    	class EcouteBouton2 implements ActionListener
    	{public void actionPerformed (ActionEvent ev)
    	{
    		System.out.println("Stop");
    	}	
    	}
     
    }
    Et la classe 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
    15
    16
    	import javax.swing.*;
    	import java.awt.*;
    	import java.awt.event.*;
        import javax.swing.event.*;
     
     
    class Dessin extends JPanel {
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		Color c = g.getColor();
    		g.setColor(Color.RED);
    		g.drawOval(50,50,50,50);
    		g.setColor(c);
    	}
    }

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

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Par défaut
    Ton panel Dessin est opaque (un JPanel est opaque par défaut) et masque le panel parent panneau.

    Par exemple, rend le transparent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Constructeur
    Dessin() {
        setOpaque(false);
    }
    Il y a des tutoriels Swing sur le site qui sont bien fait et t'aideront à mieux comprendre comment construire des interfaces et utiliser cette librairie.
    Par exemple : ici

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

Discussions similaires

  1. demande d'aide pour dessiner un cercle
    Par nadjib2007 dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/09/2007, 20h09
  2. Réponses: 10
    Dernier message: 11/04/2007, 11h14
  3. Dessiner un cercle sur une sphère ?
    Par nico_ippo dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/01/2007, 17h25
  4. Réponses: 2
    Dernier message: 13/10/2004, 14h52
  5. Dessiner un cercle
    Par delire8 dans le forum DirectX
    Réponses: 7
    Dernier message: 26/07/2003, 12h11

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