Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kurupi13 en 1 Octubre 2013, 07:33 am



Título: Consulta sobre llamada a un metodo
Publicado por: kurupi13 en 1 Octubre 2013, 07:33 am
Tengo un problema con un metodo al cual no logro llamar, el compilador me dice void type not allowed here.

Me explico, tengo una clase FiuniPaint extends JFrame implements MouseInputListener que es donde basicamente se dibujan figuras en pantalla como rectangulos, ovalos, etc. en eso no hay problema.

Tambien hay otra clase PanelDeFiguras extends JPanel, esa clase hace que todos los objetos que se dibujan en pantalla se guarden en un ArrayList, en esa clase esta este metodo.

figuras es el ArrayList

Citar
public void borrarTodo() {
        this.figuras.clear();
    }

Lo que no consigo es poder llamar a este metodo desde la clase FiuniPaint con un JButton

estas son las formas que probe

limpiar es mi boton y panel es mi objeto PanelDeFiguras. Son de instancia las dos

Citar
panel.add(limpiar);
limpiar.addActionListener(this.panel.borrarTodo());

De esta forma obtengo void type not allowed here

-------------------------------

En esta me parece que esta la solucion pero no se puede llamar a la variable panel dentro de actionPerformed. No se por que no encuentra mi variable panel dentro de ese metodo escribiendo por ejemplo this.panel.borrarTodo();

Citar
panel.add(limpiar);
limpiar.addActionListener(new ActionListener(){
           
         @Override
         public void actionPerformed(ActionEvent ae){
         
         }           
         });

Les agradeceria si alguien me puede ayudar. Gracias de antemano.




Título: Re: Consulta sobre llamada a un metodo
Publicado por: visualfree en 1 Octubre 2013, 17:16 pm
Coloca mas código para tener mayor detalle de lo que estas haciendo...

lo que veo es que podrias crear otra instancia de ese ArrayList<>

lista = new ArrayList<String>();

o lo que tu ya tienes

lista.clear();

Saludos.


Título: Re: Consulta sobre llamada a un metodo
Publicado por: kurupi13 en 1 Octubre 2013, 21:39 pm
bueno, dentro de este metodo en la clase FiuniPaint se encuentran los botones para crear las diferentes figuras, y tambien es donde deberia estar el boton que borra el ArrayList que las contiene.
La clase es muy extensa como para poner todo el codigo, puse solo lo mas importante, resumido, y es justamente en esta parte en donde estoy teniendo problemas para borrar el ArrayList con clear()

Clase FiuniPaint
Citar
private PanelDeFiguras panel = new PanelDeFiguras();
private JButton limpiar = new JButton("Borrar pantalla");
private JButton rectangulo = new JButton("Rectangulo");

private JPanel figuras() {
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        /*
         this.panel.borrarTodo();
         panel.add(limpiar);
         limpiar.addActionListener(new ActionListener(){
           
         @Override
         public void actionPerformed(ActionEvent ae){
         this.panel.borrarTodo();
         }
               
         });*/

       // limpiar.addActionListener(this.panel.borrarTodo());

        // Boton Figura Rectangulo
        panel.add(rectangulo);
        rectangulo.addActionListener(
                new SeleccionadorDeFigura(this, new RectanguloFactory()));

        return panel;
    }

en la clase PanelDeFiguras

Citar
//ArrayList para guardar las figuras
private ArrayList<Figura> figuras = new ArrayList<>();

//Metodo que deberia de poder usar para borrar los objetos del ArrayList
public void borrarTodo() {
        this.figuras.clear();
    }

//De esta forma agregamos objetos al ArrayList
@Override
    public void paint(Graphics g) {
        for (int i = 0; i < figuras.size(); i++) {
            figuras.get(i).dibujar(g);
        }
    }


Es basicamente la parte con la que tengo problemas, no puedo poner todo el codigo simplemente porque es muy largo.
Reitero, lo que deberia de poder hacer es llamar al metodo borrarTodo() con un boton desde la clase FiuniPaint, pero eso me da un error void type not allowed here

Gracias al que pueda ayudarme.