Foros del Web » Programación para mayores de 30 ;) » Java »

Colocar un JPanel en el contructor o en main

Estas en el tema de Colocar un JPanel en el contructor o en main en el foro de Java en Foros del Web. Hola tengo una duda, y es la siguiente. Yo cuando agrego un JPanel, dentro de un JFrame, desde el constructor de mi JFrame, hace que ...
  #1 (permalink)  
Antiguo 21/08/2015, 14:44
Avatar de GumiCat  
Fecha de Ingreso: mayo-2014
Ubicación: Argentina
Mensajes: 16
Antigüedad: 10 años
Puntos: 0
Pregunta Colocar un JPanel en el contructor o en main

Hola tengo una duda, y es la siguiente. Yo cuando agrego un JPanel, dentro de un JFrame, desde el constructor de mi JFrame, hace que se dibuje lo que hay en JPanel (en este caso un texto). Pero cuando agrego el JPanel en el main, luego de haber creado una instancia de JFrame, no se muestra. ¿Cuál es el problema?

Mi primer código: Colocando el JPanel en el constructo de mi JFrame:

Código Java:
Ver original
  1. package pruebas;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Graphics;
  6. import java.awt.MouseInfo;
  7. import java.awt.Point;
  8. import java.awt.PointerInfo;
  9.  
  10. import javax.swing.*;
  11.  
  12.  
  13. public class Mouse2 {
  14.  
  15.     public static void main(String[] args)  {
  16.        
  17.         Frame2 frame1 = new Frame2();
  18.        
  19.         //frame1.add(new Canvas2());
  20.        
  21.     }
  22. }
  23.  
  24.  
  25. @SuppressWarnings("serial")
  26. class Frame2 extends JFrame{
  27.    
  28.     Canvas2 canvas1 = new Canvas2();
  29.    
  30.     public Frame2(){
  31.        
  32.         JFrame a = new JFrame("Ventana");
  33.        
  34.         a.setBounds(100, 100, 250, 200);
  35.         a.setVisible(true);
  36.         a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.         a.setResizable(false);
  38.        
  39.         a.add(canvas1);
  40.     }
  41. }
  42.  
  43. @SuppressWarnings("serial")
  44. class Canvas2 extends Canvas{
  45.  
  46.  
  47.     public void paint(Graphics g){
  48.         g.drawString("Hola mundo!", 10, 20);
  49.        
  50.     }
  51.  
  52. }


Mi segundo codigo: Colocando el JPanel luego de creada la instacia de JFrame, en el main.

Código Java:
Ver original
  1. package pruebas;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Graphics;
  6. import java.awt.MouseInfo;
  7. import java.awt.Point;
  8. import java.awt.PointerInfo;
  9.  
  10. import javax.swing.*;
  11.  
  12.  
  13. public class Mouse2 {
  14.  
  15.     public static void main(String[] args)  {
  16.        
  17.         Frame2 frame1 = new Frame2();
  18.        
  19.         frame1.add(new Canvas2());
  20.        
  21.     }
  22. }
  23.  
  24.  
  25. @SuppressWarnings("serial")
  26. class Frame2 extends JFrame{
  27.    
  28.     //Canvas2 canvas1 = new Canvas2();
  29.    
  30.     public Frame2(){
  31.        
  32.         JFrame a = new JFrame("Ventana");
  33.        
  34.         a.setBounds(100, 100, 250, 200);
  35.         a.setVisible(true);
  36.         a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.         a.setResizable(false);
  38.        
  39.         //a.add(canvas1);
  40.     }
  41. }
  42.  
  43. @SuppressWarnings("serial")
  44. class Canvas2 extends Canvas{
  45.  
  46.  
  47.     public void paint(Graphics g){
  48.         g.drawString("Hola mundo!", 10, 20);
  49.        
  50.     }
  51.  
  52. }

mi duda, es porqué, se muestra en el primero el texto y no en el segundo?
  #2 (permalink)  
Antiguo 23/08/2015, 21:06
 
Fecha de Ingreso: agosto-2015
Mensajes: 16
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Colocar un JPanel en el contructor o en main

Que tal mi buen amigo. No vea nada malo en tu código. Sin embargo sospecho que el segundo no te funciona porque tienes las clases "Frame2 y Canvas2" nombradas de la misma forma que en el primer código. Yo lo he probado y me ha funcionado ambos. El único cambio que le hice al segundo es renombrar las clases tal como lo muestro a continuación.

import java.awt.Canvas;
import java.awt.Graphics;
import javax.swing.*;


public class Mouse2 {

public static void main(String[] args) {

Frame2 frame1 = new Frame2();

frame1.add(new Canvas2());

}
}

class Frame3 extends JFrame{

//Canvas2 canvas1 = new Canvas2();

public Frame3(){

JFrame a = new JFrame("Ventana");

a.setBounds(100, 100, 250, 200);
a.setVisible(true);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setResizable(false);

//a.add(canvas1);
}
}

class Canvas3 extends Canvas{


public void paint(Graphics g){
g.drawString("Hola mundo!", 10, 20);

}

}
sino resuelves tu problema hazlo saber, para ver de qué otra forma poder ayudarte.
Saludos cordiales amigo.

Etiquetas: jframe, jpanel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.