Código de Java - Mover JLabel por el form

Imágen de perfil
Val: 489
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Mover JLabel por el formgráfica de visualizaciones


Java

Publicado el 24 de Enero del 2019 por Rafael Angel
833 visualizaciones desde el 24 de Enero del 2019
Un ejemplo de como simular un movimiento natural en tiempo real.
Yo intentando crear el motor de un rts.

Requerimientos

NetBeans 8.2

1.0

Publicado el 24 de Enero del 2019gráfica de visualizaciones de la versión: 1.0
834 visualizaciones desde el 24 de Enero del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Es la primera versión del código, se usará para crear un juego donde las unidades puedan ir de un punto a otro y regresar o si se mueven hacia nuevos puntos regresar ya sea por el mismo camino o establecer otro más corto.
No obstante aquí solo se ejemplifica el uso de las coordenadas. No puse código para el resto del juego pero si logro hacerlo y que funcione bien, lo publicaré.
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
129
130
131
132
133
134
135
136
137
138
139
140
141
/**
     * Clase para hacer que un JLabel se pueda mover por la pantalla.
     * Ya sea pasandole las coordenadas o agarrandolas cada vez que se hace click en la ventana o form.
     * Se deve ejecutar moverse_adelante o moverse_atras.
     * El nombre del class se debe a que estoy usando unos JLabel con imagenes de robots.
     * @author Rafael Angel Montero Fernández (Angel Continium).
     */
    public class Robot{
 
        /**
         * Constructor bacio.
         */
        public Robot(){
 
        }
 
        /**
         * Variables que iran guardando la informacion en formato de texto.
         */
        private String sX="", sY="";
 
        /**
         * Sirve para usarse en tiempo de ejecucion, cada vez que se agrega informacion, la variable String aumenta.
         * Y a su ves los vectores int tambien, sin la necesidad de copiar un vector en otro para luego aumentarle el tamaño al primero y luego vover a copiar a la inversa.
         * 
         * @param x Numero int para la coordenada x.
         * @param y Numero int para la coordenada y.
         */
        public void add(int x, int y){
 
            if(sX.equals("")==true){
                sX=jlRobot.getX() + "";
                sY="" + jlRobot.getY();
            }
 
            if (  sX.equalsIgnoreCase ("")==true){
                sX+=x +"";
                sY+=y+"";
            }
            else{
               sX+=" " + x;
                sY+=" " + y;
            }
            addCoordenadas_x(sX);
            addCoordenadas_y(sY);
        }
 
        /**
         * Permite agregar numeros en forma de matriz pero a mi modo, ejemplo: "1 2 3 4 5 6 7";
         * Y el codigo se encarga en darle el formato adecuado, todo esto para facilitar la programacion.
         * @param nuevas_coordenadas Debe pasarle numeros en formato String, ceparados por un espacio.
         */
        private void addCoordenadas_x(String nuevas_coordenadas) {
            String[] mCoordenadas = nuevas_coordenadas.split(" ");
            mCoordenadas_x = new int[mCoordenadas.length];
            int i=0;
            while (i <= mCoordenadas_x.length - 1) {
                mCoordenadas_x[i] = Integer.parseInt(mCoordenadas[i]);
                i++;
            }
        }
 
        /**
         * Permite agregar numeros en forma de matriz pero a mi modo, ejemplo: "1 2 3 4 5 6 7";
         * Y el codigo se encarga en darle el formato adecuado, todo esto para facilitar la programacion.
         * @param nuevas_coordenadas Debe pasarle numeros en formato String, ceparados por un espacio.
         */
        private void addCoordenadas_y(String nuevas_coordenadas) {
            String[] mCoordenadas = nuevas_coordenadas.split(" ");
            mCoordenadas_y = new int[mCoordenadas.length];
            int i=0;
            while (i <= mCoordenadas_y.length - 1) {
                mCoordenadas_y[i] = Integer.parseInt(mCoordenadas[i]);
                i++;
            }
        }
 
        /**
         * Borra toda la memoria de coordenadas o movimientos.
         */
        public void borrar_coordenadas(){
            this.sX="";
            this.sY="";
            this.mCoordenadas_x=new int[0];
            this.mCoordenadas_y=new int[0];
        }
 
        private int[] mCoordenadas_x;
        private int[] mCoordenadas_y;
 
        /**
         * Para facilitar las impreciones de textoe n la ventana inmediato.
         * @param datos 
         */
        private void msj(String datos){
            System.out.println(datos);
        }
 
        /**
         * Se mueve hacia adelante, de acuerdo a las coordenadas.
         */
        public void moverse_adelante(){
            Thread h=new Thread(){
                int i=0;
                public void run(){
                    try {
                        if(i<=mCoordenadas_x.length-1){
                            jlRobot.setBounds(mCoordenadas_x[i], mCoordenadas_y[i], 223, 226);
                            i++;
                            sleep(500);
                            run();
                        }
                    } catch (InterruptedException ex) {
//                        Logger.getLogger(FRM_RTS.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
              h.start();
        }
        /**
         * Hace el moviemeinto de regreso de acuerdo a las coordenadas.
         */
        public void moverse_atras(){
            Thread h=new Thread(){
                int i=mCoordenadas_x.length - 1;
                public void run(){
                    try {
                        if(i >= 0){
                            jlRobot.setBounds(mCoordenadas_x[i], mCoordenadas_y[i], 223, 226);
                            i--;
                            sleep(500);
                            run();
                        }
                    }catch (InterruptedException ex) {
//                        Logger.getLogger(FRM_RTS.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
            h.start();
        }
    } //Fin del class.



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5028
Revisar política de publicidad