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
Citarpublic 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.
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.
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 hereGracias al que pueda ayudarme.