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

Problema con paneles

Estas en el tema de Problema con paneles en el foro de Java en Foros del Web. Hola soy nuevo en esto de java y agradeceria que me echen una mano con el siguiente problema. La situacion es que hice un pequeño ...
  #1 (permalink)  
Antiguo 13/05/2011, 07:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 1
Pregunta Problema con paneles

Hola soy nuevo en esto de java y agradeceria que me echen una mano con el siguiente problema.

La situacion es que hice un pequeño programa con Jframe y paneles donde en la parte superior estan los botones de "circulo", "linea", "Rectangulo" (solo funciona el de circulo) la cuestion es que al apretar el boton ya con funcionamiento (circulo) , no me dibuja en la parte inferior el circulo de inmediato, sino que tengo que estar redimencionando la ventana o agrandandola para que el circulo aparesca. No se donde cometi el error de programacion para que esto me pase tal vez en el ActionPerformed , de todas formas les envio el codigo de los 4 archivos para que los vean y si encuentran mi trafalada indiquenlo con letras grandes para que no se me olvide.

Todos los archivos deben estar en la misma carpeta, haber si lo compilan para que experimenten el error que les indico par aque puedan corregirme y asi poder yo seguir aprendiendo este interesante lenguaje


******************* EjerciciosPropuestosT5.java*****************

public class EjerciciosPropuestost5 {

public static void main(String[] args) {

new Ejercicio1();
}

}

************************************************** **********


**********************Ejercicio1.java************* **************

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

public class Ejercicio1 extends JFrame
{

public Ejercicio1()
{
super("Ejercicios Tema 5");
this.setBounds(100, 100, 500, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
this.setVisible(true);

BorderLayout border = new BorderLayout();

Panel pnlEj1 = new Panel(new GridLayout(1,3));

JButton btnCir = new JButton("Circulo");
btnCir.addActionListener(new ManejoBoton(this));

JButton btnLin = new JButton("Linea");
JButton btnRec = new JButton("Rectangulo");
pnlEj1.add(btnCir);
pnlEj1.add(btnLin);
pnlEj1.add(btnRec);


this.getContentPane().add(pnlEj1,BorderLayout.NORT H);

this.setVisible(true);
}

}

************************************************** *************


**************************ManejoBoton.java******** ***************

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class ManejoBoton implements ActionListener{

Ejercicio1 ej1;
Circulo cir =new Circulo();
public ManejoBoton(Ejercicio1 ej1)
{
this.ej1=ej1;
}

public void actionPerformed(ActionEvent e) {

ej1.getContentPane().add(cir,BorderLayout.CENTER);
}

}

************************************************** *************

***************************Circulo.java*********** ****************

import java.awt.Graphics;
import javax.swing.JPanel;

public class Circulo extends JPanel{

@Override
public void paint(Graphics g)
{
int x=(int)Math.floor((Math.random()*1)*(Math.random() *300));
int y=(int)Math.floor((Math.random()*1)*(Math.random() *300));
int ancho=x+(int)Math.floor(Math.random()*(Math.random ()*100));
int alto=y+(int)Math.floor(Math.random()*(Math.random( )*100));
g.drawOval(x, y, ancho, alto);
}

}

************************************************** ***********
  #2 (permalink)  
Antiguo 13/05/2011, 17:10
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: Problema con paneles

hola

debe ser que te falta invocar al método repaint(); del panel para actualizarlo luego de haber dibujado el circulo.

este método es el que se invoca cuando mueves el panel o redimencionas o pasas otra ventana por delante, etc...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-
  #3 (permalink)  
Antiguo 15/05/2011, 14:53
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con paneles

Tambien e notado que al apretar los bordes de la ventana el circulo aleatorio cambia de posicion como si hubiera tocado el boton circulo nuevamente cosa que no deberia pasar, pero no lo hago. les agradeceria que copiaran el codigo y lo comprobaran ya que es raro el tema

Etiquetas: paneles
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:31.