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:
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:
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);
}
}
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.
Intente hacerlo con getComponents(); de la siguiente manera:
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:
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.