Java - problema con codigo

 
Vista:
sin imagen de perfil
Val: 13
Ha aumentado su posición en 9 puestos en Java (en relación al último mes)
Gráfica de Java

problema con codigo

Publicado por David (2 intervenciones) el 31/07/2020 04:09:34
amigos buena noche, espero que puedan apoyarme, estoy realizando un programa pero no encuentro solucion a un tema ya que genere un boton con el cual al darle click debe cambiar entre nombres de un listado de 9 personas. Al dar un solo click cambia bien de primero a segundo, de segundo a tercero, pero para el cambio de tercero a cuarto debo dar click 2 veces, para el cambio de cuarto a quinto 3 veces y la cuenta sube con cada cambio, alguna sugerencia de como solucionarlo?

este es el codigo

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
}  if(e.getSource() == sigAlBat){
          display = primero;
          primero = segundo;
          segundo = tercero;
          tercero = cuarto;
          cuarto = quinto;
          quinto = sexto;
          sexto = septimo;
          septimo = octavo;
          octavo = noveno;
          cs = abanica;
          cb = bolas;
        if(display == primero){
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }     if(display == primero){
         primero = segundo;
         jugalbat.setText(segundo);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }    if(display == segundo){
         segundo = tercero;
         jugalbat.setText(tercero);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == tercero){
         tercero = cuarto;
         jugalbat.setText(cuarto);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == cuarto){
         cuarto = quinto;
         jugalbat.setText(quinto);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == quinto){
         quinto = sexto;
         jugalbat.setText(sexto);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == sexto){
         sexto = septimo;
         jugalbat.setText(septimo);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == septimo){
         septimo = octavo;
         jugalbat.setText(octavo);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }      if(display == octavo){
         octavo = noveno;
         jugalbat.setText(noveno);
         tablero.setText("SIGUIENTE BATEADOR");
         contadorb = String.valueOf(bolas);
         ba.setText(contadorb);
         bolas = 0;
         contadors = String.valueOf(abanica);
         st.setText(contadors);
         abanica = 0;
  }
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
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problema con codigo

Publicado por Kabuto (706 intervenciones) el 01/08/2020 02:04:40
Hola.
Desconociendo el programa completo es difícil darte una solución exacta.
Pero puedo darte una idea.

Creo más lógico y más fácil de gestionar poner los nombres en un arreglo y usar un int a modo de indice para ir recorriéndolos.
Puedes crear una clase a parte que se encargue específicamente de esto.

Te pongo un ejemplo a continuación. Esta clase tiene nombres en un arreglo y un indice.
Tiene un método que retorna un nombre del arreglo y hace avanzar el indice una posición para que a la próxima petición devuelva el siguiente nombre de la lista.
Puesto que hay solo 9 nombres, antes de incrementar el indice comprobamos si ya hemos recorrido todos los indices posibles, en cuyo caso vuelve al valor 0 para comenzar de nuevo por el primero de la lista.

Esa una clase muy simple y que requiere unas pocas líneas de código.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class ListaNombres {
 
	private String[] lista;
	private int indice;
 
	public ListaNombres() {
		lista = new String[] {"Juan Lopez", "Andrés Sanchez", "Ramón Espinar",
				"Luis Segura", "Alfredo Plata", "Jorge Morales", "Freddy Marcos",
				"Oscar Matute", "Javier Valerio"};
		indice = 0;
	}
 
	public String getSiguienteNombre() {
 
		String siguiente = lista[indice];
		if (indice == 8)
			indice = 0;  //Volvemos al principio de la lista
		else
			indice++;
 
		return siguiente;
	}
 
}

Ahora pongo un pequeño ejemplo donde hacer funcionar esta clase. Un pequeña ventana con un campo de texto y un botón.
Cada vez que se pulsa el botón, se le pide a la clase anterior que retorne el siguiente nombre invocando su método.
Puedes pulsar el botón todas las veces que quieras, los nombres van alternando de forma correcta.

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
public class Mostrar extends JFrame{
 
	private JTextField campoNombre;
	private JButton botonSiguiente;
	private ListaNombres listaNombres;
 
	public Mostrar() {
		listaNombres = new ListaNombres();
 
		campoNombre = new JTextField(15);
		campoNombre.setText(listaNombres.getSiguienteNombre());
		botonSiguiente = new JButton("Siguiente Nombre");
		botonSiguiente.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				campoNombre.setText(listaNombres.getSiguienteNombre());
			}
		});
 
		setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
		JPanel panelNombre = new JPanel();
		panelNombre.add(campoNombre);
		panelNombre.setBorder(new EmptyBorder(30, 40, 15, 40));
		JPanel panelBoton = new JPanel();
		panelBoton.add(botonSiguiente);
		panelBoton.setBorder(new EmptyBorder(15, 40, 30, 40));
 
		add(panelNombre);
		add(panelBoton);
 
		setTitle("Nombres");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
 
	public static void main(String[] args) {
 
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Mostrar();
			}
		});
	}
 
}

Entiendo que tu programa es más complejo que todo esto, pero quizás te de una idea para gestionar los nombres de otra manera.

En lugar de usar tantas variables que se van pasando su valor de unas a otras, quizás te vaya mejor utilizar un array como he puesto de ejemplo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 13
Ha aumentado su posición en 9 puestos en Java (en relación al último mes)
Gráfica de Java

problema con codigo

Publicado por David (2 intervenciones) el 08/08/2020 06:11:30
Kabuto gracias por el consejo en verdad me ayudó bastante, estoy aprendiendo a programar y hay cosas que aún no se como hacer. Tengo otra duda ojalá puedas ayudarme. Necesito que un botón cambie de color blanco a negro con el click del mouse y con otro click regrese al color original el botón, logró cambiar a negro pero de ahí ya no pasó. Gracias de antemano
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