Java - Atascado en Swing

 
Vista:
sin imagen de perfil

Atascado en Swing

Publicado por Máximo (1 intervención) el 31/07/2013 13:59:50
Hola, soy programador novato en Java, aunque tengo bastante experiencia en TBasic, Pascal y Assembler.

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.

Les agradecería cualquier tipo de orientación para la solución del error/es. Les adjunto el código a continuación.

Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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 main {
 
	Pantalla1 frame1;
 	Pantalla2 frame2;
	public int contador1 = 0;
	public int contador2 = 0;
 
	public static void main (String[] args) {
		Pantalla1 frame1 = new Pantalla1();
		Pantalla2 frame2 = new Pantalla2();
		frame2.setVisible(false);
		frame1.setVisible(true);
	}
 
	public class Pantalla1 extends JFrame implements ActionListener {
 
		private JPanel contentPane;
 
		public Pantalla1() {
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			contentPane = new JPanel();
			contentPane.setLayout(null);
			setBounds(10,10,640,480);
			setContentPane(contentPane);
			JButton botonSalir = new JButton("SALIR");
				botonSalir.setBounds(500,300,100,50);
				botonSalir.setActionCommand("salir");
				botonSalir.addActionListener(this);
				contentPane.add(botonSalir);
			JButton botonIncrementar = new JButton("SUMAR");
				botonIncrementar.setBounds(50,100,100,50);
				botonIncrementar.setActionCommand("incr1");
				botonIncrementar.addActionListener(this);
				contentPane.add(botonIncrementar);
			JButton botonCambia1 = new JButton("CAMBIA");
				botonCambia1.setBounds(50,300,100,50);
				botonCambia1.setActionCommand("cambia2");
				botonCambia1.addActionListener(this);
				contentPane.add(botonCambia1);
		}
 
		public void incrementa1() {
			++contador1;
		}
 
		@Override
		public void actionPerformed(ActionEvent arg0) {
			if (arg0.getActionCommand().equals("salir")) {
				System.exit(0);
			}
 
			else if (arg0.getActionCommand().equals("incr1")) {
				incrementa1();
				System.out.println("El Contador1 acumula: "+contador1);
			}
 
			else if (arg0.getActionCommand().equals("cambia2")) {
				frame1.setVisible(false);
				frame2.setVisible(true);
			}
 
		}
 
	}
 
	public class Pantalla2 extends JFrame implements ActionListener {
 
		private JPanel contentPane;
 
		public Pantalla2() {
 
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			contentPane = new JPanel();
			contentPane.setLayout(null);
			setBounds(100,100,640,480);
			setContentPane(contentPane);
 
			JButton botonSalir = new JButton("SALIR");
				botonSalir.setBounds(500,300,100,50);
				botonSalir.setActionCommand("salir");
				botonSalir.addActionListener(this);
				contentPane.add(botonSalir);
 
			JButton botonIncrementar = new JButton("SUMAR");
				botonIncrementar.setBounds(50,100,100,50);
				botonIncrementar.setActionCommand("incr2");
				botonIncrementar.addActionListener(this);
				contentPane.add(botonIncrementar);
 
			JButton botonCambia2 = new JButton("CAMBIA");
				botonCambia2.setBounds(50,300,100,50);
				botonCambia2.setActionCommand("cambia1");
				botonCambia2.addActionListener(this);
				contentPane.add(botonCambia2);
 
		}
 
		public void incrementa2() {
			++contador2;
		}
 
		@Override
		public void actionPerformed(ActionEvent arg0) {
			if (arg0.getActionCommand().equals("salir")) {
				System.exit(0);
			}
 
			else if (arg0.getActionCommand().equals("incr2")) {
				incrementa2();
				System.out.println("El Contador2 acumula: "+contador2);
			}
 
			else if (arg0.getActionCommand().equals("cambia1")) {
				frame2.setVisible(false);
				frame1.setVisible(true);
			}
		}
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Atascado en Swing

Publicado por antonio dieguez (12 intervenciones) el 23/08/2013 03:37:12
hola, espero sigas metiéndote en java, que crezca el uso del lenguaje nomás :p

el método main es static y no puede instanciar a una inner class(a menos que sea declarada static también).

Si quieres pones todo static incluyendo variables,

o bien pones el código de inicialización en el constructor de tu clase principal. Fíjate que le has puesto de nombre main y se topa con el nombre del método main. No es normal. Favor póngale a la clase otro nombre, por ejemplo, Programa, defina el constructor, y luego en el método main haces new Programa() (eso ya sí se puede) y el código de inicialización puede ir ahí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar