Netbeans - Formulario extenso

 
Vista:

Formulario extenso

Publicado por Ruben (1 intervención) el 30/03/2021 23:19:19
Buenas tardes, necesito orientación por favor

Estoy construyendo un formulario extenso en Netbeans, por lo que deseo es saber como hacer para que el formulario este divido en dos partes y al dar click en un boton "Siguiente" pueda ver los campos a completar en la segunda seccion
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: 12
Ha aumentado su posición en 13 puestos en Netbeans (en relación al último mes)
Gráfica de Netbeans

Formulario extenso

Publicado por Kabuto (17 intervenciones) el 31/03/2021 12:01:24
Hola.

Puedes usar un CardLayout.
Este layout lo que hace es maquetar distintos paneles, uno sobre otro, de forma que solo se ve el que está encima. Similar a lo que ocurre con una baraja de cartas, de ahí el nombre.
Con los métodos adecuados se puede ir alternando el panel que "está encima" para ir mostrando uno u otro.

Entonces, puedes dividir tu formulario en dos paneles, tres,... lo que quieras...y mediante botones de acción vas pasando de un panel a otro.

Te dejo un código de ejemplo que he escrito rápido, con dos miniformularios en los que se puede ir de uno al otro con botones. Muestra el uso básico del CardLayout

Espero te sirva de inspiración, un saludo.

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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package formularioCard;
 
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
 
public class Ejemplo extends JFrame{
 
	private JTextField campo1;
	private JTextField campo2;
	private JTextField campo3;
	private JTextField campo4;
	private JTextField campo5;
	private JTextField campo6;
	private JButton btSiguiente;
	private JButton btAnterior;
	private JButton btTerminar;
 
	private CardLayout gestorPaneles;
	private JPanel pnPrincipal;
 
	public Ejemplo() {
 
		gestorPaneles = new CardLayout();
		pnPrincipal = new JPanel();
		pnPrincipal.setLayout(gestorPaneles);
		//Añadimos los paneles formularios, dándoles un nombre
		pnPrincipal.add(new Formulario1(), "form1");
		pnPrincipal.add(new Formulario2(), "form2");
		setContentPane(pnPrincipal);
 
		setTitle("Ejemplo");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
 
 
	//Paneles formulario
	private class Formulario1 extends JPanel {
 
		public Formulario1() {
			campo1 = new JTextField(10);
			campo2 = new JTextField(10);
			campo3 = new JTextField(10);
			btSiguiente = new JButton("Siguiente >");
			btSiguiente.addActionListener(new AccionSiguiente());
 
			setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
			JPanel pn1 = new JPanel();
			pn1.add(new JLabel("Campo 1: "));
			pn1.add(campo1);
			JPanel pn2 = new JPanel();
			pn2.add(new JLabel("Campo 2: "));
			pn2.add(campo2);
			JPanel pn3 = new JPanel();
			pn3.add(new JLabel("Campo 3: "));
			pn3.add(campo3);
			JPanel pn4 = new JPanel();
			pn4.setLayout(new FlowLayout(FlowLayout.RIGHT));
			pn4.add(btSiguiente);
			add(pn1);
			add(pn2);
			add(pn3);
			add(pn4);
 
			setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15),
					BorderFactory.createRaisedSoftBevelBorder()));
		}
	}
 
	private class Formulario2 extends JPanel {
 
		public Formulario2() {
			campo4 = new JTextField(10);
			campo5 = new JTextField(10);
			campo6 = new JTextField(10);
			btAnterior = new JButton("< Anterior");
			btAnterior.addActionListener(new AccionAnterior());
			btTerminar = new JButton("Terminar");
			btTerminar.addActionListener(new AccionTerminar());
 
			setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
			JPanel pn1 = new JPanel();
			pn1.add(new JLabel("Campo 4: "));
			pn1.add(campo4);
			JPanel pn2 = new JPanel();
			pn2.add(new JLabel("Campo 5: "));
			pn2.add(campo5);
			JPanel pn3 = new JPanel();
			pn3.add(new JLabel("Campo 6: "));
			pn3.add(campo6);
			JPanel pn4 = new JPanel();
			pn4.add(btAnterior);
			pn4.add(btTerminar);
			add(pn1);
			add(pn2);
			add(pn3);
			add(pn4);
 
			setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15),
					BorderFactory.createRaisedSoftBevelBorder()));
		}
	}
 
	//Acciones para los botones
	private class AccionSiguiente implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			//Muestra el siguiente panel, el llamado "form2"
			gestorPaneles.next(pnPrincipal);
			/*
			 * También serviría:
			 * gestorPaneles.show(pnPrincipal, "form2");
			 */
		}
	}
 
	private class AccionAnterior implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			//Muestra el primer panel, el llamado "form1"
			gestorPaneles.first(pnPrincipal);
			/*
			 * También serviría:
			 * gestorPaneles.show(pnPrincipal, "form1");
			 */
		}
	}
 
	private class AccionTerminar implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
 
			/*
			 * Aquí decidimos que hacer al terminar de rellenar
			 * el formulario.
			 * Mostrar datos, o comprobar si todos los campos están completos, etc...
			 */
			StringBuilder mensaje = new StringBuilder();
			mensaje.append("Formulario 1:\n");
			mensaje.append("Campo 1: " + campo1.getText());
			mensaje.append("\nCampo 2: " + campo2.getText());
			mensaje.append("\nCampo 3: " + campo3.getText());
			mensaje.append("\n\nFormulario 2:\n");
			mensaje.append("Campo 4: " + campo4.getText());
			mensaje.append("\nCampo 5: " + campo5.getText());
			mensaje.append("\nCampo 6: " + campo6.getText());
 
			JOptionPane.showMessageDialog(null, mensaje);
 
		}
	}
 
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Ejemplo();
			}
		});
	}
 
}
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