Dessin en cliquant sur des jmenuItem

Fermé
soukayna - 3 nov. 2012 à 02:28
 soukayna - 4 nov. 2012 à 03:28
Bonjour,

Svp j'ai trouvé un pbl dans les dessins des formes geometriques .je veux par exemple que si je clique sur cercle qu'il me trace un cercle ,voila le code que j'ai utiliser
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package prjtzeors;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.*;



/**
*
* @author Utilisateur
*/
public class Fenetre extends JFrame{


private JMenuBar menubar;
private JMenu forme,rot ,srot,vrot,vdim;
private JButton go,stop;
private JMenuItem cercle,triangle,carre,polygone;
private JMenuItem active,desactive;
private JMenuItem rapider,moyenner,lenter;
private JMenuItem positif,negatif;
private JMenuItem rapided,moyenned,lented;
private JPanel pan;
private panneau pann;
private static Event event;
public Fenetre(){
setTitle("dessin");
setSize(700,600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//

Container c=getContentPane();
c.setLayout(new BorderLayout());

JMenuBar menubar=new JMenuBar();
setJMenuBar(menubar);

//
Event event=new Event();
event.setFenetre(this);
//
JMenu forme=new JMenu("forme");
JMenu rot=new JMenu("rotation");
JMenu vrot=new JMenu("Vitesse de rotation");
JMenu srot=new JMenu("Sens de rotation");
JMenu vdim=new JMenu("Vitesse du Dimensionnement");
//
cercle=new JMenuItem("cercle");
carre=new JMenuItem("caree");
triangle=new JMenuItem("triangle");
polygone=new JMenuItem("polygone");
//
active=new JMenuItem("activee");
desactive=new JMenuItem("desactive");
//
rapider=new JMenuItem("rapide");
moyenner=new JMenuItem("moyenne");
lenter=new JMenuItem("lente");

//
positif=new JMenuItem("positif");
negatif=new JMenuItem("negatif");

//
rapided=new JMenuItem("rapide");
moyenned=new JMenuItem("moyenne");
lented=new JMenuItem("lente");
//
go=new JButton("Go");
stop=new JButton("Stop");
//
pan=new JPanel();

//
menubar.add(forme);
menubar.add(rot);
menubar.add(vrot);
menubar.add(srot);
menubar.add(vdim);


//
forme.add(cercle);
forme.add(carre);
forme.add(triangle);
forme.add(polygone);

//
rot.add(active);
rot.add(desactive);
//

vrot.add(rapider);
vrot.add(moyenner);
vrot.add(lenter);

//

srot.add(positif);
srot.add(negatif);

//
vdim.add(rapided);
vdim.add(moyenned);
vdim.add(lented);

//ajout du panel
pann=new panneau();
c.add(pann,BorderLayout.CENTER);

//ajout des boutons


c.add(pan,BorderLayout.SOUTH);
go.setPreferredSize(new Dimension(90,30));
stop.setPreferredSize(new Dimension(90,30));
pan.add(go);
pan.add(stop);
go.setEnabled(false);
stop.setEnabled(true);

//Ajout des evenements
cercle.addActionListener(new Event(cercle));
triangle.addActionListener(new Event(triangle));
carre.addActionListener(new Event(carre));
polygone.addActionListener(new Event(polygone));



}
public JMenuItem getCercle(){
return cercle;
}
public JMenuItem getTriangle(){
return triangle;
}
public JMenuItem getCarre(){
return carre;
}
public JMenuItem getPolygone(){
return polygone;
}
public JMenuItem getActive(){
return active;
}
public JMenuItem getDesactivee(){
return desactive;
}
public JMenuItem getRapider(){
return rapider;
}
public JMenuItem getMoyenner(){
return moyenner;
}
public JMenuItem getLenter(){
return lenter;
}
public JMenuItem getPositif(){
return positif;
}

private JMenuItem getRapided(){
return rapided;
}
private JMenuItem getMoyenned(){
return moyenned;
}
private JMenuItem getLented(){
return lented;
}

public JButton getGo(){
return go;
}
public JButton getStop(){
return stop;
}
public panneau getPann(){
return pann;
}



}

class panneau extends JPanel{
Event event;

public void painComponent(Graphics g){
super.paintComponent(g);

if(event.getBcercle()==true){

g.drwOval(10,20,15,20);

}


}



}
et voila la classe ecouteur

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package prjtzeors;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


/**
*
* @author Utilisateur
*/
public class Event implements ActionListener{

private JButton btn;
private JMenuItem item;
private static Fenetre f;
private JPanel pan;
private panneau pann;
// private static panneau pan;
private int nbre;
private boolean bcercle=false;
private boolean rectangle=false;
private boolean triangle=false;

public Event(){}

public Event(Fenetre fen){

fen=f;//reference vers la fenetre cree
}
public Event(JButton btn){
this.btn=btn;
}
public Event(JMenuItem item){
this.item=item;
}
public void setFenetre(Fenetre f){
this.f=f;
}

@Override
public void actionPerformed(ActionEvent e) {

if(e.getSource()==f.getCercle()){

bcercle=true;
f.getPann().repaint();
System.out.println(bcercle);


}
if(e.getSource()==f.getCercle()){
nbre=2;
}
if(e.getSource()==f.getTriangle()){
nbre=3;
}
if(e.getSource()==f.getPolygone()){
nbre=4;

}

if(e.getSource()== f.getPolygone()){
String option=JOptionPane.showInputDialog(f,"entrer un nombre entier n appartenant a IN{0,1,2}");
System.out.println(option);

}

}
public boolean getBcercle(){
return bcercle;
}

}














2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
3 nov. 2012 à 13:18
Il ne faut pas se tromper dans le noms des méthodes !

public void paintComponent(Graphics g){ 
super.paintComponent(g); 

if(event.getBcercle()==true){ 

g.drawOval(10,20,15,20); 

}

Mais forcément, cette modification ne vas pas régler tout le problème, car ça rame, mais ça va te permettre d'avancer un peu dans le débogage de ton programme.
0
Merci ,tu m'as sauvé, la vie j'ai passe 2 jours a chercher le pbl Merci :)
0