Java - Mostrar un Jlabel encima de un Canvas

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

Mostrar un Jlabel encima de un Canvas

Publicado por Camilo (15 intervenciones) el 21/09/2019 16:51:29
Buenas,

Estoy tratando de colocar un Jlabel encima de un Canvas, es decir, el canvas está dibujando continuamente (se encuentra dentro un hilo, que se ejecuta por medio de un ciclo While), y digamos que el Canvas me dibuja una especie de mapa, el Jlabel seria el personaje, sin embargo este me queda debajo del canvas y por tanto no se ve.
No sé si exista algún método que me pueda enviar el Jlabel adelante del canvas.

El canvas y el label se encuentran dentro del mismo panel

De antemano Gracias
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

Mostrar un Jlabel encima de un Canvas

Publicado por Tom (1605 intervenciones) el 21/09/2019 18:37:58
Probablemente no necesitas un label. Si lo que necesitas mostrar es una imagen, usa un ImageView.
No es buena idea usar un hilo. Y tampoco lo es el estar "dibujando continuamente".
El canvas realmente solo te es útil si el fondo cambia poco o nada.
El orden en que "se ven" los nodos en la escena es exactamente el que tú hayas decidido al añadirlos (aunque siempre puedes cambiar algo con Node.toFront() o node.toBack()).
Si usas un panel para toda la escena, que sea al menos un StackPanel, aunque probablemente tampoco necesitas ningún panel.
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
sin imagen de perfil
Val: 66
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Mostrar un Jlabel encima de un Canvas

Publicado por Camilo (15 intervenciones) el 21/09/2019 19:36:21
Otra duda, para obtener el getGraphics() del Canvas, es necesario que primero se muestre en pantalla? (setVisible(true)).

Pues al sacar el método que dibuja del hilo, y colocarlo donde se crea y se muestra la ventana (esta ventana es la que contiene el canvas) para dibujarlo solo una vez, suceden dos cosas:
Si coloco el método antes de volver la ventana visible (setVisible() de la ventana) me bota un nullPointerException, en cambio, si lo pongo después de mostrar la pantalla, no lo dibuja, ya intenté hacerle un repaint a la ventana y al canvas. Al hacerle el repaint al canvas, ejecuta el programa y me muestra un breve destello de lo que seria el canvas dibujado, pero luego desaparece, por esto lo puse para que lo dibujara constantemente
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

Mostrar un Jlabel encima de un Canvas

Publicado por Tom (1605 intervenciones) el 21/09/2019 19:48:12
En principio puedes "pintar" en un canvas antes de hacerlo visible, incluso antes de añadirlo a la escena, pero supongo que siempre en el hilo de javafx.
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