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 : 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
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
 
	}