Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2015, 14:44
Avatar de GumiCat
GumiCat
 
Fecha de Ingreso: mayo-2014
Ubicación: Argentina
Mensajes: 16
Antigüedad: 10 años, 5 meses
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?