Insertar una imagen en un canvas u otras opciones

Godo
24 de Agosto del 2003
Hola, estoy creando un JApplet de un juego de cartas de tamaño fijo, que tiene varias partes, un textarea que sera para un chat, varios botones, etc.

El caso es que hay una parte del applet que quiero que tenga otro color de fondo, lo que seria por decirlo asi "la mesa de juego", y ahi tengo que poner las imagenes de las cartas (que me gustaria que fueran botones, ya que facilita la labor de los eventos), y otros elementos.

El caso es que no se que componete "base" usar para esa parte, he probado JPanel, pero "no me vale" porque hay que usar layers y se maneja muy mal. Quiero usar un componente en el que pueda definir la posicion donde coloco los elementos (botones, etc) de manera absoluta (pixel 23,15 a 50, 100 por ejemplo) como en el JApplet general, pero no encuentro ninguno que me valga. JFrame no se puede meter dentro de JApplet, JInternalFrame me crea una nueva ventana...

El unico que he encontrado es Canvas, pero no se como insertar una imagen, y no se pueden añadir botones (o no se como) y es mas engorroso de manejar los eventos.

En definitiva, la pregunta:
-¿Que componente sería el ideal para el "tablero" de juego, que se puedan insertar botones, se puedan definir las posiciones absolutas y tenga manejo de eventos?

-Y si la unica opcion es canvas, ¿como insertar un boton o una imagen en su defecto?

Sorrys por el rollo, era para que se entendiera.

Gracias por adelantado y un saludo a todos.

chuidiang
24 de Agosto del 2003
Se me ocurren tres posibles soluciones para que jueges:

a) Echa un ojo en mi pagina www.geocities.com/chuidiang al puzzle en java. No son cartas, pero es algo parecido a lo que quieres hacer. Dibujo las imagenes sobre un componente (creo que es un canvas, aunque no te lo puedo asegurar).

b) Si quieres que las cartas sean componentes, hay un layout (GridLayout) que te pone el contenedor como si fuera una matriz, de forma que cada carta iria en una celda de la matriz. Quizas te valga.

c) Otra opcion, si queres experimentar porque tampoco se muy bien como iria, es la siguiente. Haces que las cartas sean JLabel con su imagen, pero no las añadas a ningun componente, solo haces sus new. Luego al canvas le pides el graphics (getGraphics()) y luego llamas a los metodos de las cartas de paint(graphics) o update(graphics). Esto hará que los JLabel se pinten sobre el canvas, aunque no los has añadido. Supongo que al graphics tendras que hacerle algo para que la carta salga en la posición que tu quieres. También tendrás que encargarte de repintar tu las cartes en los refrescos. En fin, es una idea para probar, no tengo ni idea de si funcionara.

Se bueno.