Bonsoir,
j'essaie de réalise r un composant que je puisse déplacer dans un jpanel. je voudrai qu'il ait des poignés pour pouvoir l'agrandir ou le réduire à volonté.
je suis parti d'un jpanel.
Le problème de mon code est que je perds le Jpanel si je déplace trop vite la souris (c'est identique pour la réduction de la taille du jpanel).
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 public class Test { /** * @param args */ public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame.getContentPane().add(panel); frame.setSize(300, 300); panelDe = new Panel(); panel.add(panelDe); panelDe.setBackground(Color.RED); panelDe.setName("rodolphe"); panelDe.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseMoved(MouseEvent e) { xDep = e.getX(); yDep = e.getY(); } @Override public void mouseDragged(MouseEvent e) { x = panelDe.getX(); y = panelDe.getY(); lg = panelDe.getWidth()-3; lr = panelDe.getHeight()-3; if (e.getX()> 3 && e.getX()<lg){ if (e.getY()>3 && e.getY()<lr){ panelDe.setLocation(e.getX()+x-panelDe.getWidth()/2, e.getY()+y-panelDe.getHeight()/2); frame.repaint(); } } if (e.getX()> lg){ if (e.getX()>xDep){ panelDe.setSize(panelDe.getWidth()+1, panelDe.getHeight()); } if (e.getX()<xDep){ panelDe.setSize(panelDe.getWidth()-1, panelDe.getHeight()); } } } }); frame.setVisible(true); } static Panel panelDe; private static int xDep ; private static int yDep ; static int x ; static int y ; static int lg ; static int lr ; }
et mon JPanel
merci de votre aide.
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 @SuppressWarnings("serial") public class Panel extends JPanel{ public Panel() { setBackground(Color.RED); setPreferredSize(new Dimension(50, 20)); } public void paintComponent(Graphics g) { super.paintComponent(g); int width = getWidth(); int height = getHeight(); g.setColor(ColorBackGround); g.fillRect(0, 0, width+x, height); g.setColor(Color.BLACK); g.drawLine(0, 10, 0, 20); g.drawLine(1, 10, 1, 20); g.drawLine(2, 10, 2, 20); } public void setBackground(Color color){ ColorBackGround = color; } private Color ColorBackGround ; private int x ; }







Répondre avec citation





Partager