Dessiner avec ma souris dans une fenêtre
Salut, j'essaie de faire une petite appli qui permet de dessiner avec la souris dans un fenêtre JFrame. En essayant de faire ca, j'ai deux souci que je trouve bizarre et que j'arrive pas à resoudre!
De un, j'ai un décalage entre l'endroit ou je presse le bouton de la souris et l'endroit ou je vois le trait que je veux tracer apparaître (étrange n'est ce pas!!?)
De deux, dans ma JFrame j'ai deux JPanel, un pour dessiner au centre et l'autre au nord, comme gestionnaire de positionnement j'utilise un borderlayout, donc mon jpanel dans lequel je veux dessiner est centré mais j'arrive pas à ne pas sortir les trace de ma souris qui deborde toujours en suivant mes mouvements sur toute la fenêtre. Svp aidez moi please je cale net sur ça! Voici mon code :
Code:
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 122 123 124 125 126 127 128
| private int x1, int y1;
private JPanel milieu = new JPanel();
private JMenuBar jmb = new JMenuBar();
private JMenu affichage = new JMenu("Affichage");
private JMenu aide = new JMenu("Aide?");
private JMenu couleur = new JMenu("Couleur");
private JMenu forme = new JMenu("Forme");
private JMenuItem carre = new JMenuItem("Carré");
private JMenuItem rond = new JMenuItem("Rond");
private JMenuItem effacer = new JMenuItem("Effacer");
private JMenuItem texteAide = new JMenuItem("Texte d'aide");
private JMenuItem boiteAide = new JMenuItem("Fenêtre d'aide");
private JMenuItem rouge = new JMenuItem("rouge");
private JMenuItem bleu = new JMenuItem("bleu");
private JMenuItem vert = new JMenuItem("vert");
private JMenuItem jaune = new JMenuItem("jaune");
private JMenuItem gris = new JMenuItem("gris");
private JMenuItem orange = new JMenuItem("orange");
private JMenuItem violet = new JMenuItem("violet");
private JMenuItem noir = new JMenuItem("noir");
private JMenuItem blanc = new JMenuItem("blanc");
private JToolBar barreOutil = new JToolBar();
private JButton boutonRouge = new JButton("");
private JButton boutonBleu = new JButton("");
private JButton boutonVert = new JButton("");
private JButton boutonJaune = new JButton("");
private JButton boutonGris = new JButton("");
private JButton boutonOrange = new JButton("");
private JButton boutonViolet = new JButton("");
private JButton boutonNoir = new JButton("");
private JButton boutonBlanc = new JButton("");
protected Fenetre()
{
this.setTitle("Boite Ã* dessin");
this.setSize(430, 430);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setLayout(new BorderLayout(1,1));
milieu.setBackground(new Color(194,211,231));
this.add(milieu, BorderLayout.CENTER);
affichage.add(couleur);affichage.add(effacer);affichage.add(forme);forme.add(carre);forme.add(rond);
couleur.add(blanc);couleur.add(gris);couleur.add(jaune);couleur.add(vert);couleur.add(bleu);couleur.add(rouge);
couleur.add(orange);couleur.add(violet);couleur.add(noir);
aide.add(texteAide);aide.add(boiteAide);
jmb.add(affichage);jmb.add(aide);jmb.setBackground(Color.yellow);
this.setJMenuBar(jmb);
boutonRouge.setBackground(Color.red);boutonBleu.setBackground(Color.blue);boutonVert.setBackground(Color.green);boutonGris.setBackground(Color.gray);
boutonBlanc.setBackground(Color.white);boutonNoir.setBackground(Color.black);boutonViolet.setBackground(new Color(163,73,164));boutonOrange.setBackground(Color.orange);
boutonJaune.setBackground(Color.yellow);
barreOutil.add(boutonRouge);barreOutil.add(boutonBleu);barreOutil.add(boutonGris);barreOutil.add(boutonOrange);
barreOutil.add(boutonBlanc);barreOutil.add(boutonVert);barreOutil.add(boutonViolet);barreOutil.add(boutonNoir);
barreOutil.add(boutonJaune);
barreOutil.setOrientation(JToolBar.HORIZONTAL);
barreOutil.setFloatable(false);
barreOutil.setPreferredSize(new Dimension(400,18));
this.add(barreOutil, BorderLayout.NORTH);
rond.addActionListener(this);vert.addActionListener(this);jaune.addActionListener(this);blanc.addActionListener(this);carre.addActionListener(this);
effacer.addActionListener(this);bleu.addActionListener(this);gris.addActionListener(this);noir.addActionListener(this);orange.addActionListener(this);
texteAide.addActionListener(this);rouge.addActionListener(this);orange.addActionListener(this);violet.addActionListener(this);
boutonRouge.addActionListener(this);boutonJaune.addActionListener(this);boutonOrange.addActionListener(this);boutonViolet.addActionListener(this);
boutonBleu.addActionListener(this);boutonVert.addActionListener(this);boutonGris.addActionListener(this);boutonNoir.addActionListener(this);
//this.addMouseListener(this);
milieu.addMouseListener(this);
milieu.addMouseMotionListener(this);
}
protected void showWindow()
{
this.setVisible(true);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
int x1 = e.getX();
int y1 = e.getY();
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
Graphics g = getGraphics( );
int xFin = e.getX( );
int yFin = e.getY( );
g.drawLine(x1, y1, xFin, yFin);;
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
} |