Estoy diseñando una aplicación a modo de prueba para implementar la estructura en otro proyecto de mayores dimensiones. La idea es trabajar con 2 ventanas idénticas, las cuales están provistas de 3 botones:
- botonIncrementar: añade 1 a la variable contador1 o al 2, según esté activa la ventana 1 ó 2
- botonSalir: Sale de la aplicación
- botonCambia: Cierra la ventana actual y activa la otra
Se podría añadir a cada ventana 2 displays con los contadores acumulados, pero aún estoy buscando la forma.
El caso es que Eclipse me detecta un error en la línea:
Pantalla1 frame1 = new Pantalla1();
Concretamente me subraya "new Pantalla1()", mientras que no señala error en la siguiente línea de código, que es su gemela. Seguro que hay más errores de concepto que quizá influyan (o no) en ese error u otros, pero ya dije que soy novato en Java. El error específico que me marca Eclipse es:
"No enclosing instance of type CambiaPantalla is accessible. Must qualify the allocation with an enclosing instance of type CambiaPantalla (e.g. x.new A() where x is an instance of CambiaPantalla)"
Les agradecería cualquier tipo de orientación para la solución del error. Les adjunto el código a continuación.
Saludos.
Cita:
Código Java:
Ver original
package Default; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class CambiaPantalla { Pantalla1 frame1; Pantalla2 frame2; public int contador1 = 0; public int contador2 = 0; Pantalla1 frame1 = new Pantalla1(); // AQUÍ INDICA EL ERROR Pantalla2 frame2 = new Pantalla2(); frame2.setVisible(false); frame1.setVisible(true); } public Pantalla1() { contentPane.setLayout(null); setBounds(10,10,640,480); setContentPane(contentPane); botonSalir.setBounds(500,300,100,50); botonSalir.setActionCommand("salir"); botonSalir.addActionListener(this); contentPane.add(botonSalir); botonIncrementar.setBounds(50,100,100,50); botonIncrementar.setActionCommand("incr1"); botonIncrementar.addActionListener(this); contentPane.add(botonIncrementar); botonCambia1.setBounds(50,300,100,50); botonCambia1.setActionCommand("cambia2"); botonCambia1.addActionListener(this); contentPane.add(botonCambia1); } public void incrementa1() { ++contador1; } @Override if (arg1.getActionCommand().equals("salir")) { else if (arg1.getActionCommand().equals("incr1")) { incrementa1(); else if (arg1.getActionCommand().equals("cambia2")) { frame1.setVisible(false); frame2.setVisible(true);} } } public Pantalla2() { contentPane.setLayout(null); setBounds(100,100,640,480); setContentPane(contentPane); botonSalir.setBounds(500,300,100,50); botonSalir.setActionCommand("salir"); botonSalir.addActionListener(this); contentPane.add(botonSalir); botonIncrementar.setBounds(50,100,100,50); botonIncrementar.setActionCommand("incr2"); botonIncrementar.addActionListener(this); contentPane.add(botonIncrementar); botonCambia2.setBounds(50,300,100,50); botonCambia2.setActionCommand("cambia1"); botonCambia2.addActionListener(this); contentPane.add(botonCambia2); } public void incrementa2() { ++contador2; } @Override if (arg2.getActionCommand().equals("salir")) { else if (arg2.getActionCommand().equals("incr2")) { incrementa2(); else if (arg2.getActionCommand().equals("cambia1")) { frame2.setVisible(false); frame1.setVisible(true);} } } }