Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: PabloPbl en 19 Febrero 2015, 22:14 PM

Título: [Duda]Como obtengo el contexto gráfico de un panel para dibujarlo en otro panel
Publicado por: PabloPbl en 19 Febrero 2015, 22:14 PM
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);
}
}


Título: Re: [Duda]Como obtengo el contexto gráfico de un panel para dibujarlo en otro panel
Publicado por: Usuario Invitado en 20 Febrero 2015, 00:07 AM
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.
Título: Re: [Duda]Como obtengo el contexto gráfico de un panel para dibujarlo en otro panel
Publicado por: PabloPbl en 20 Febrero 2015, 01:25 AM
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.