Dessiner des cercles dans un jpanel

Fermé
karim Fadhli - 16 févr. 2016 à 15:53
Bonjour,

je veux dessiner des cercles dans le jpanel 3 mais mon programme ne fonctionne pas je sais ou ilya le problème aidez moi s'il vous plait
import java.awt.*;
import javax.swing.*;
public class Main {
public Main()
{
Fenetre frame=new Fenetre();
frame.setTitle("Fadhli");
JMenuBar menubar= new JMenuBar();
frame.setJMenuBar(menubar);

JMenu file =new JMenu("File");
menubar.add(file);
JMenuItem exit=new JMenuItem("Exit");
file.add(exit);
JMenu Help =new JMenu("Help");
menubar.add(Help);
JMenuItem about=new JMenuItem("About");
Help.add(about);

JSplitPane split;
TSPanel panel0 = new TSPanel ();
JPanel panel1 = new JPanel();
panel1.setBackground(Color.white);
JPanel panel2 = new JPanel();
panel2.setBackground(Color.white);



DragCircle p=new DragCircle();
p.setSize(panel2.getWidth(), panel2.getHeight());
panel2.add(p);




split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel1, panel2);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add (panel0,BorderLayout.NORTH);
frame.getContentPane().add (split,BorderLayout.CENTER);
}
public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {

new Main();
}
});

}
}
public class Fenetre extends JFrame {


public Fenetre(){

this.setSize(400, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

}
class DragCircle extends JPanel {

private final class MouseDrag extends MouseAdapter {
private boolean dragging = false;
private Point last;

@Override
public void mousePressed(MouseEvent m) {

last = m.getPoint();
System.out.println("mousePressed");
dragging = isInsideEllipse(last);
if(!dragging&&globale<5)
{

T1[globale]=m.getX();
T2[globale]=m.getY();
globale++;
}
else if(globale>=5&&!dragging)
{
System.out.println("vous avez dépassé la limite");
}
repaint();
}

@Override
public void mouseReleased(MouseEvent m) {
j=6;
last = null;
dragging = false;
repaint();
}
// @Override
//c'est la fonction qui permet de déplacer le cercle
public void mouseDragged(MouseEvent m) {
if(j!=6)
{
x=T1[j];
y=T2[j];
int dx = m.getX() - last.x;
int dy = m.getY() - last.y;
if (dragging) {
T1[j] += dx;
T2[j] += dy;
}

last = m.getPoint();
repaint();
}
}
}
private int x;
private int y;

int T1[] = new int[5];
int T2[] = new int[5];
private int globale=0;
private int j=6;
private int k=1;
private MouseDrag mouseDrag;

public DragCircle() {
setBackground(Color.WHITE);//couleur de jpanel
mouseDrag = new MouseDrag();
addMouseListener(mouseDrag);
addMouseMotionListener(mouseDrag);
}

public boolean isInsideEllipse(Point point) {
System.out.println("isInsideEllipse");
for(int i=0;i<5;i++){
if(new Ellipse2D.Float(T1[i],T2[i], 50, 50).contains(point))
{
j=i;
}
}
return (j!=6);
}

@Override
public void paintComponent(Graphics g) {

super.paintComponent(g);
for(int h=0;h<globale;h++)
{
g.drawOval(T1[h], T2[h], 50, 50);
}

}

}
class TSPanel extends JPanel
{
public TSPanel ()
{
this.setBackground (Color.yellow);
Dimension d1 = new Dimension(150, 20);
//this.setMaximumSize(d1);
this.setPreferredSize(d1);
}

}
A voir également: