ayuda con mi programa
buen día, miren estoy practicando los eventos y mi programa esta sencillo seleccionando un elemento del JComboBox y después dándole un clic al JButton me dibuje en el Panel la figura que seleccione y si lo dibuja, pero, me crea una especie de error visual, mejor les dejo el código para que vean lo que ocurre y pues si me podrían decir que ocurre, cual es mi error.
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class Main extends JFrame{
JComboBox caja;
String figura[]={"circulo","cuadrado","poligono"};
PanelP p2;
JPanel panel;
JButton b;
private Main(){
Container contenedor = getContentPane();
contenedor.setLayout(new BorderLayout());
panel = new JPanel();
panel.setLayout(new FlowLayout());
contenedor.add(panel,BorderLayout.NORTH);
caja = new JComboBox(figura);
panel.add(caja);
b = new JButton("Figura");
panel.add(b);
p2= new PanelP();
contenedor.add(p2,BorderLayout.CENTER);
Manejador dibuja = new Manejador();
Manejador2 boton = new Manejador2();
b.addActionListener(boton);
setSize(400,400);
setVisible(true);
}
public class Manejador2 implements ActionListener{
public void actionPerformed(ActionEvent ev){
if(ev.getSource()==b){
if(caja.getSelectedIndex()==0){
p2.opcion = 1;
p2.repaint();
}if(caja.getSelectedIndex()==1){
p2.opcion = 2;
p2.repaint();
}if(caja.getSelectedIndex()==2){
p2.opcion = 3;
p2.repaint();
}
}
}
}
private class PanelP extends JPanel{
int opcion=0;
Polygon poligono = new Polygon();
public void paint(Graphics g) {
if(opcion==1)
g.drawOval(10,10,100,100);
else if(opcion==2)
g.drawRect(10,10,100,100);
else if(opcion==3){
poligono.addPoint(100, 120);
poligono.addPoint(150, 280);
poligono.addPoint(170, 200);
poligono.addPoint(190, 250);
poligono.addPoint(200, 60);
poligono.addPoint(150, 50);
g.fillPolygon(poligono);
}
{}
}
}
public static void main(String[] args) {
Main ventana = new Main();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
- Inicie sesión o regístrese para enviar comentarios
Has instanciado una clase que
Has instanciado una clase que no colocaste aquí (la de Manejador), de todos modos no la ocupa. Según yo, no hay "error visual" porque no tengo ni idea de que quieres decir con eso.
De casualidad el supuesto error es con el objeto
Polygon
?Por cierto, justamente se
Por cierto, justamente se acaba de publicar un tema sobre la convención de la escritura del código. Revisa aquí.
en serio amigo si te dibuja
en serio amigo si te dibuja la figuras sin problema???, es que me las dibuja pero me sale como que una pantalla fantasma del anterior, por ejemplo le doy en cuadrado y lo dibuja en el panel pero se ve al mismo tiempo el mismo jComboBox con la primera opción (circulo) y el boton, situados un por debajo al igual que le diera en polígono o circulo, pero cuando muevo la ventana se borra amigo, la verdad no se si me explique !>.<
Intenta esto: en tu clase
Intenta esto: en tu clase privada PanelP en lugar de heredar de JPanel hereda de
JComponent
. Y ejecutas el programa tal y como esta. Y me dices que tal.muchas gracias amigo, si
muchas gracias amigo, si funciono, perdón por las molestia pero me podrías decir la diferencia de heredar de Jpanel que de Jcomponent
Si, y unos screenshots
Si, y unos screenshots estarian bien :)
Si JPanel tiene problemas en
Si JPanel tiene problemas en repaint()