[Duda]Como obtengo el contexto gráfico de un panel para dibujarlo en otro panel

Iniciado por PabloPbl, 19 Febrero 2015, 22:14 PM

0 Miembros y 1 Visitante están viendo este tema.

PabloPbl

Hola gente, necesito obtener el contenido gráfico(Los cuadrados y esas cosas) de un JPanel y pintarlo en mi JPanel principal, es decir:
Tengo 2 clases las cuales heredan de JPanel, pues ¿Como obtendría el contenido gráfico de un JPanel, y pintarlo en otro?
Cuando digo contenido gráfico, me estoy refiero a las figuras geométricas que se pintan en pantalla como el cuadrado con fillRect(); etc.

Yo lo intente hacer de esta manera, pero no me funciono:

Este es el primer JPanel:
Código (java) [Seleccionar]
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class GamePanel extends JPanel{
Maps mapa;

public GamePanel() {
setPreferredSize(new Dimension(640, 480));
setFocusable(true);
requestFocus();
mapa = new Maps();
}
public void paintComponent(Graphics g) {
paintComponent(mapa.getGraphics());//ESTA LINEA ME DA ERROR AL QUERER OBTENER LOS GRAFICOS DEL OTRO JPANEL
}
}



Y este es mi segundo JPanel:
Código (java) [Seleccionar]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class Maps extends JPanel{

public Maps() {
setPreferredSize(new Dimension(640, 480));
}

public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.fillRect(0, 0, 640, 480);
}
}



Usuario Invitado

Prueba con el método getComponents(), que devuelve un arreglo que contiene todos los elementos de un JPanel. Ésto es posible porque  JPanel implementa Container.

Salu2.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

PabloPbl

Intente hacerlo con getComponents(); de la siguiente manera:

Código (java) [Seleccionar]
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class GamePanel extends JPanel{
Maps mapa;

public GamePanel() {
setPreferredSize(new Dimension(640, 480));
setFocusable(true);
requestFocus();
mapa = new Maps();
}
public void paintComponent(Graphics g) {
paintComponent(mapa.getComponents());//ESTA LINEA ME DA ERROR AL QUERER OBTENER LOS GRAFICOS DEL OTRO JPANEL
}
}


Lo he intentado pero es imposible, ya que el método paintComponent recibe Graphics:

Tambien intente pasandole como parametro, los graficos del otro JPanel,de la siguiente manera:

Código (java) [Seleccionar]
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class GamePanel extends JPanel{
Maps mapa;

public GamePanel() {
setPreferredSize(new Dimension(640, 480));
setFocusable(true);
requestFocus();
mapa = new Maps();
}
public void paintComponent(Graphics g) {
paintComponent(mapa.getGraphics());//ESTA LINEA ME DA ERROR AL QUERER OBTENER LOS GRAFICOS DEL OTRO JPANEL
}
}


Pero no hay caso, no se pinta el panel.