Java - ¿Cómo puedo hacer para que los datos ingresados los muestre separados en otro jTextField?

 
Vista:
Imágen de perfil de Johann

¿Cómo puedo hacer para que los datos ingresados los muestre separados en otro jTextField?

Publicado por Johann (3 intervenciones) el 03/09/2022 21:54:06
https://es.stackoverflow.com/questions/555137/cómo-puedo-hacer-para-que-los-datos-ingresados-los-muestre-separados-en-otro-jt
[/img][/img]
Tengo un pequeño inconveniente en este programa de java, jFrame.

Mi inconveniente es que al darle click al botón ingreso de datos de vendedores, al momento de ingresarlos no hay ningún problema pero al querer mostrarlos los datos los muestra en la misma casilla. Es decir todos los nombres ingresados los muestra en la primera casilla de nombre y apellido, todos los artículos vendidos los muestra en la primera casilla de artículos vendidos y así con las otras 2 casillas.

Dejaré todo el código en este enlace:

https://gist.github.com/Chorizo1414/3c350d8f2d4ba0a474cef5a4a02cb38b

Aquí adjunto la imagen del menú

vDKXr



Quisiera que se vayan mostrando en los otros espacios (jTextField) y no es la misma casilla.

Esté es el problema que quisiera solucionar
L5fGA

Mostrar los datos en otras casillas

Están son las variables que utilice de manera global:

String Vendedores, nombre;
int vendedores;
int ventas;
int sueldo;
double sueldoF;


Aquí está el código del Botón, el cual nos sirve para el ingreso de los datos y de las operaciones que debe hacer.

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

int i;

do
{
Vendedores = JOptionPane.showInputDialog(null,"Ingrese la cantidad de vendedores");
vendedores = Integer.parseInt(Vendedores);


if(vendedores >= 3 && vendedores <= 8)
{
for( i = 0; i < vendedores; i++)
{
nombre = JOptionPane.showInputDialog(null,"Ingrese el nombre y apellido del vendedor");
jTextField1.setText(jTextField1.getText()+nombre);

String Ventas = JOptionPane.showInputDialog(null,"Ingrese la cantidad de articulos vendidos");
ventas = Integer.parseInt(Ventas);
jTextField9.setText(jTextField9.getText()+ventas);

if(ventas >= 100 && ventas <= 300)
{
sueldo = ventas * 125;
jTextField17.setText(jTextField17.getText()+sueldo);

sueldoF = sueldo * 0.1067;
jTextField25.setText(jTextField25.getText()+sueldoF);
}


else if(ventas >= 301 && ventas <= 500)
{
sueldo = ventas * 145;
jTextField17.setText(jTextField17.getText()+sueldo);

sueldoF = sueldo * 0.1067;
jTextField25.setText(jTextField25.getText()+sueldoF);

}


else if(ventas >= 501 && ventas <= 800)
{

sueldo = ventas * 165;
jTextField17.setText(jTextField17.getText()+sueldo);

sueldoF = sueldo * 0.1067;
jTextField25.setText(jTextField25.getText()+sueldoF);

}


else if(ventas >= 801 && ventas <= 1000)
{
sueldo = ventas * 175;
jTextField17.setText(jTextField17.getText()+sueldo);

sueldoF = sueldo * 0.1067;
jTextField25.setText(jTextField25.getText()+sueldoF);

}

else
{
jTextField9.setText("");
JOptionPane.showMessageDialog(null,"Ingrese una cantidad mayor que 100 o menor que 10001");
}


}//cierra for

}

else
{
JOptionPane.showMessageDialog(null,"Ingrese una cantidad de 3 a 8 vendedores");
}

}while(vendedores <=3 || vendedores >=8);
}
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: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿Cómo puedo hacer para que los datos ingresados los muestre separados en otro jTextField?

Publicado por Kabuto (1381 intervenciones) el 03/09/2022 23:45:26
Parte del problema es que concatenas los datos en el mismo campo:

1
2
nombre = JOptionPane.showInputDialog(null,"Ingrese el nombre y apellido del vendedor");
                    jTextField1.setText(jTextField1.getText()+nombre);
Por eso te salen juntos.

Pero el principal problema, es que puede resultar complicado gestionar con eficiencia tantos campos de texto si los declaramos todos de forma individual.

Es más fácil, y se ahorra mucho código, si se agrupan en arrays.
Podemos hacer 4 arrays de 8 campos cada uno: un arreglo para los 8 campos de nombres, otro para los 8 campos de cantidades, etc...

De hecho, quedaría mejor hacerlo con una matriz de 4 x 8. Pero ahora quizás se entienda mejor si usamos 4 arreglos.

He escrito así rápido, una versión muy reducida de tu programa, pero donde se puede ver como gestionar los campos con arreglos y bucles para recorrerlos.
Puede servirte de ejemplo e inspiración para adaptarlo a tu programa.

Fíjate en las partes que marco en negrita, como se reduce el código a la hora de pedir datos o limpiar los campos de texto:
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
129
130
131
132
133
134
135
136
137
138
139
public class Main extends JFrame {
 
	//Campos de texto agrupados en arrays
	private JTextField[] nombres;
	private JTextField[] cantidades;
	private JTextField[] salariosBase;
	private JTextField[] salariosReciben;
 
	private JButton btIngresar;
	private JButton btLimpiar;
	private JButton btCerrar;
 
	public Main() {
		inicializarComponentes();
		//Panel con campos
		JPanel pnCampos = new JPanel();
		pnCampos.setLayout(new GridLayout(9, 4, 15, 15));
		//Añadimos etiquetas de título
		pnCampos.add(new JLabel("Nombre y Apellido", SwingConstants.CENTER));
		pnCampos.add(new JLabel("Cantidad Articulos Vendidos", SwingConstants.CENTER));
		pnCampos.add(new JLabel("Sueldo", SwingConstants.CENTER));
		pnCampos.add(new JLabel("Sueldo a Recibir", SwingConstants.CENTER));
		//Añadimos los campos
		for (int i = 0; i < 8; i++) {
			pnCampos.add(pnCampos.add(nombres[i]));
			pnCampos.add(pnCampos.add(cantidades[i]));
			pnCampos.add(pnCampos.add(salariosBase[i]));
			pnCampos.add(pnCampos.add(salariosReciben[i]));
		}
		pnCampos.setBorder(BorderFactory.createEmptyBorder(20,20,10,20));
 
		//Panel con botones
		JPanel pnBotones = new JPanel();
		pnBotones.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 20));
		pnBotones.add(btIngresar);
		pnBotones.add(btLimpiar);
		pnBotones.add(btCerrar);
 
		//Construccion del JFrame
		setLayout(new BorderLayout());
		add(pnCampos, BorderLayout.CENTER);
		add(pnBotones, BorderLayout.SOUTH);
 
		//Configuracion del JFrame
		setTitle("Datos vendedores");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
 
	private void inicializarComponentes() {
		//Campos de texto
		nombres = new JTextField[8];
		cantidades = new JTextField[8];
		salariosBase = new JTextField[8];
		salariosReciben = new JTextField[8];
 
		for (int i = 0; i < 8; i++) {
			nombres[i] = new JTextField();
			cantidades[i] = new JTextField();
			salariosBase[i] = new JTextField();
			salariosReciben[i] = new JTextField();
		}
		//Botones
		btIngresar = new JButton("Ingreso Datos de Vendedores");
		btIngresar.addActionListener(new AccionIngresar());
		btLimpiar = new JButton("Limpiar");
		btLimpiar.addActionListener(new AccionLimpiar());
		btCerrar = new JButton("Salir");
		btCerrar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
			System.exit(0);
			}
		});
	}
 
	private class AccionIngresar implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
 
			int vendedores = 0;
 
			do {
				vendedores = Integer.parseInt(
						JOptionPane.showInputDialog(null,"Ingrese la cantidad de vendedores"));
 
				if (vendedores <3 || vendedores >8)
					JOptionPane.showMessageDialog(null, "Cantidad de vendedores ha ser entre 3 y 8");
				else {
					//Con un bucle pedimos datos y recorremos los arrays de JTextField para insertar datos
					for (int i = 0; i < vendedores; i++) {
						nombres[i].setText(JOptionPane.showInputDialog(null, "Ingrese NOMBRE y APELLIDO"));
						int cantidad = Integer.parseInt(
								JOptionPane.showInputDialog(null, "Ingrese CANTIDADES VENDIDAS"));
						cantidades[i].setText(String.valueOf(cantidad));
						//Calculamos sueldo según ventas
						int sueldo = 0;
						if(cantidad >= 100 && cantidad <= 300)
	                        sueldo = cantidad * 125;
	                    else if(cantidad >= 301 && cantidad <= 500)
	                        sueldo = cantidad * 145;
	                    else if(cantidad >= 501 && cantidad <= 800)
	                        sueldo = cantidad * 165;
	                    else if(cantidad >= 801 && cantidad <= 1000)
	                        sueldo = cantidad * 175;
						//Trasladamos los salarios a los campos de texto
						salariosBase[i].setText(String.valueOf(sueldo));
						salariosReciben[i].setText(String.valueOf(sueldo * 0.1067));
					}
				}
 
			} while(vendedores <3 || vendedores >8);
		}
	}
 
	private class AccionLimpiar implements ActionListener {
 
		@Override
		public void actionPerformed(ActionEvent e) {
			for (int i = 0; i < 8; i++) {
				nombres[i].setText(null);
				cantidades[i].setText(null);
				salariosBase[i].setText(null);
				salariosReciben[i].setText(null);
			}
		}
	}
 
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Main();
			}
		});
	}
}


Si lo ejecutamos, veremos que los datos se van repartiendo correctamente en los campos de texto, sin juntarse unos con otros.

imagen_2022-09-03_233400456
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