Bonjour !
J'aimerais savoir s'il était possible de faire en sorte que, après un clic, la souris ou plutôt le curseur de la souris ne puisse bouger seulement que sur les axes X et Y ?
Merci pour votre aide !
Bonjour !
J'aimerais savoir s'il était possible de faire en sorte que, après un clic, la souris ou plutôt le curseur de la souris ne puisse bouger seulement que sur les axes X et Y ?
Merci pour votre aide !
Mais.... la souris se déplace déjà sur les axes X et Y![]()
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
A mon avis,ça doit être un problème d'expression
Tu pourrais détailler plus ce que tu veux faire?
Lol oui effectivemment ^^
En fait, je veux que le pointeur de souris ne se déplace que verticalement ou horizontalement, et donc que je ne puisse faire aucune diagonalevoilà je pense que c'est plus claire
![]()
C'est réellement le pointeur qui doit se déplacer comme ça, ou alors l'action effectuée par le pointeur ?
Exemple : c'est un logiciel de dessin, et tu souhaites tracer un trait horizontal ou vertical ?
Attention à l'ergonomie : il peut être déconcertant pour l'utilisateur de ne plus avoir le contrôle de la souris.
Dans la plupart des cas, le pointeur reste libre mais ce qui est bougé par le pointeur suis des règles particulières.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Peut-être comme cela, avec la touche espace pour activer/desactiver ? :
Par contre attention, je n'ai pas pris le temps de prendre en compte le fait que l'utilisateur déplace la fenêtre. Du coup ca décale tout.
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 import java.awt.AWTException; import java.awt.Color; import java.awt.Graphics; import java.awt.Robot; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.*; @SuppressWarnings("serial") public class Test extends JFrame implements MouseMotionListener, KeyListener { private int x_saved, y_saved, x, y, x_saved_comp, y_saved_comp; private MouseEvent mouse = null; private Robot robot = null; public Test () { setBackground(Color.GRAY); try { robot = new Robot(); } catch (AWTException e) { e.printStackTrace(); } addMouseMotionListener(this); addKeyListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(350, 400); } @Override public void paint(Graphics g) { super.paint(g); g.setColor(Color.WHITE); if(x_saved!=0){ g.drawLine(0, y_saved_comp, getWidth(), y_saved_comp); g.drawLine(x_saved_comp, 0, x_saved_comp, getHeight()); } } public static void main(String[] args) { new Test().setVisible(true); } public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) { if(x_saved==0){ mouse = e; }else{ x = e.getXOnScreen(); y = e.getYOnScreen(); if( (x_saved - x<0?-(x_saved - x):x_saved - x) > (y_saved - y<0?-(y_saved - y):y_saved - y) ){ robot.mouseMove(e.getXOnScreen(), y_saved); }else{ robot.mouseMove(x_saved, e.getYOnScreen()); } } } public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) { if(e.getKeyChar()==KeyEvent.VK_SPACE){ if(x_saved==0){ x_saved = mouse.getXOnScreen(); y_saved = mouse.getYOnScreen(); x_saved_comp = mouse.getX(); y_saved_comp = mouse.getY(); }else{ x_saved = 0; y_saved = 0; x_saved_comp = 0; y_saved_comp = 0; } repaint(); } } }
Mais en effet, comme cela est dit plus haut, si c'est pour obtenir quelque chose de similaire à la touche shift dans photoshop, le curseur n'est jamais verrouillé.
C'est le tracé que l'on est en train de faire qui l'est.
Partager