Java - ¿Como lograr que un botón se desplaza con un MouseListener?

 
Vista:
sin imagen de perfil
Val: 98
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

¿Como lograr que un botón se desplaza con un MouseListener?

Publicado por Emmanuel (60 intervenciones) el 21/02/2020 02:34:34
Cuento con un panel el cual contiene un botón lo que quiero logra hacer es que cuando el cursor del mouse se acerque a dicho botón este se mueva de posición para que al usuario le sea imposible tocarlo y una vez que el cursor del mouse sale del panel el botón regrese a su posición inicial ya logro mover el botón de posiciones a posiciones aleatorias el problema es que cuando el cursor entra al panel el botón se mueve inmediatamente aunque el cursor no se encuentre cercas de el como corrijo esto. Dejo el código que llevo al momento:

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
public class Crazy_butt {
 
//Interfaz grafica de usuario
 
    private JFrame ventana;
    private JPanel panelC;
    private JButton bot1;
    private int x,y;
    Random alea;
// Consrructor que inicializa los componentes
 
    public Crazy_butt() {
 
        ventana = new JFrame();
        panelC = new JPanel();
        bot1 = new JButton();
        alea = new Random();
        this.atributos();
        this.armado();
        this.ecuchas();
        this.lanazar_IGU();
    }
 
    // Atributos de los componentes
    public void atributos() {
        ventana.setSize(500, 500);
        ventana.setResizable(true);
        panelC.setLayout(null);
        bot1.setText("tocame");
        bot1.setBounds(190, 190, 100, 40);
    }
 
    public void armado() {
 
        ventana.add(panelC);
        panelC.add(bot1);
 
    }
 
    // Asignar los escuchas
    public void ecuchas() {
        Escucha_Raton esc = new Escucha_Raton();
        panelC.addMouseListener(esc);
//        bot1.addActionListener(esc);
    }
 
    public void lanazar_IGU() {
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ventana.setLocationRelativeTo(null);
        ventana.setVisible(true);
    }
 
    class Escucha_Raton implements MouseListener {
 
        @Override
        public void mouseClicked(MouseEvent e) {
        }
 
        @Override
        public void mousePressed(MouseEvent e) {
        }
 
        @Override
        public void mouseReleased(MouseEvent e) {
        }
 
        @Override
        public void mouseEntered(MouseEvent e) {
               x = alea.nextInt(400);
               y= alea.nextInt(400);
               bot1.setBounds(x,y,100,40);
        }
 
        @Override
        public void mouseExited(MouseEvent e) {
            bot1.setBounds(190,190,100,40);
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿Como lograr que un botón se desplaza con un MouseListener?

Publicado por Rodrigo (623 intervenciones) el 21/02/2020 06:57:13
Compara la informacion de posicion que da el mouseEvent (getX(), getY()) que recibes y la posicion del boton.
Si la posicion esta dentro del rectangulo que encierra el boton, cambias la posicion, sino, no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Como lograr que un botón se desplaza con un MouseListener?

Publicado por Costero (148 intervenciones) el 20/03/2020 02:41:25
Le puse un rectangulo alrededor del boton para que el mouse no se acerque mucho.

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
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Random;
 
public class Crazy_butt {
 
    public static void main(String [] args) {
        Crazy_butt crazy_butt = new Crazy_butt();
        crazy_butt.atributos();
        crazy_butt.armado();
        crazy_butt.escuchas();
        crazy_butt.lanazar_IGU();
    }
 
    private JFrame ventana;
    private JPanel panelC;
    private JButton bot1;
    private JButton bot2;
    private int x,y;
    Random alea;
 
    public Crazy_butt() {
 
        ventana = new JFrame();
        panelC = new JPanel();
        bot1 = new JButton();
        bot2 = new JButton();
        alea = new Random();
        this.atributos();
        this.armado();
        this.ecuchas();
        this.lanazar_IGU();
    }
 
    // Atributos de los componentes
    public void atributos() {
        ventana.setSize(500, 500);
        ventana.setResizable(true);
        panelC.setLayout(null);
        bot1.setText("tocame");
        bot1.setBounds(190, 190, 100, 40);
 
        bot2.setText("tocame 2");
        bot2.setBounds(300, 300, 100, 40);
    }
 
    public void armado() {
        ventana.add(panelC);
        panelC.add(bot1);
        panelC.add(bot2);
    }
 
    public void ecuchas() {
        panelC.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseExited(MouseEvent e) {
                bot1.setBounds(190,190,100,40);
                bot2.setBounds(300,300,100,40);
            }
        });
    }
 
    public void escuchas() {
        panelC.addMouseMotionListener(new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent mouseEvent) {
 
            }
 
            @Override
            public void mouseMoved(MouseEvent mouseEvent) {
                if(insideRectangle(mouseEvent, bot1)) {
                    move(bot1);
                }
                if(insideRectangle(mouseEvent, bot2)) {
                    move(bot2);
                }
            }
 
            private void move(JButton jbutton) {
                x = alea.nextInt(400);
                y= alea.nextInt(400);
                jbutton.setBounds(x,y,100,40);
            }
 
 
            private boolean insideRectangle(MouseEvent mouseEvent, JButton button) {
                Rectangle rectangle = new Rectangle(button.getX() - 40, button.getY() - 40,
                        button.getWidth() + 80,
                        button.getHeight() + 80);
                return rectangle.getBounds().contains(mouseEvent.getX(), mouseEvent.getY());
            }
        });
    }
 
    public void lanazar_IGU() {
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ventana.setLocationRelativeTo(null);
        ventana.setVisible(true);
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar