You are on page 1of 6

VentanaPrincipal.

java

1 package VentanasTablas2;
2
3 import java.util.ArrayList;
15
16 public class VentanaPrincipal extends JFrame {
17
18 private static final long serialVersionUID = 1L;
19
20 /** CLASES DE LA GUI **/
21
22 private JPanel jContentPane = null;
23 private JLabel jLabel = null;
24 private JComboBox jComboBox = null;
25 private JScrollPane jScrollPane = null;
26 private JTable jTable = null;
27 private MiTableModel modeloTabla = null;
28 //Listado de columnas de la tabla
29 private String [] nombreColumnas = {"ID","Articulo","Cantidad","Precio Unitario"};
30
31 /** CLASES DEL DOMINIO **/
32
33 //Listado de clientes de la aplicación, se muestran en el JComboBox
34 private Hashtable<String, Cliente> listadoClientes = null;
35
36 //Listado de ventas de los clientes, para cada cliente hay un array con sus ventas.
37 private Hashtable<String, ArrayList<Ventas>> listadoVentasCliente = null;
38
39 //Listado de ventas del cliente seleccionado.
40 private List<Ventas> ventas = null;
41
42 public VentanaPrincipal() {
43 super();
44 //Se inicializa la interfaz
45 initialize();
46 }
47
48 private void initialize() {
49 //Se establece el panel principal que contiene el JComboBox y la JTable
50 this.setContentPane(getJContentPane());
51
52 this.setTitle("Ventana Principal");
53 this.setResizable(false);
54 this.setBounds(new Rectangle(0, 0, 502, 220));
55
56 //Se centra la ventana con respecto a la pantalla.
57 this.setLocationRelativeTo(null);
58
59 this.setVisible(true);
60 }
61
62 /**

Page 1
VentanaPrincipal.java

63 * Crea el panel principal de la aplicación. Este contiene:


64 * Una etiqueta con el texto "Cliente" que será colocada delante del JComboBox
65 * Un JComboBox con el listado de clientes
66 * Un JScrollPane que contiene la tabla con las ventas. El scrollpane muestra una barra
de desplazamiento vertical cuando se introducen más filas de las que se pueden visualizar.
67 * @return
68 */
69 private JPanel getJContentPane() {
70 if (jContentPane == null) {
71 jLabel = new JLabel();
72 jLabel.setBounds(new Rectangle(5, 5, 56, 20));
73 jLabel.setText("Clientes");
74 jContentPane = new JPanel();
75 jContentPane.setLayout(null);
76 jContentPane.add(jLabel, null);
77 jContentPane.add(getJComboBox(), null);
78 jContentPane.add(getJScrollPane(), null);
79 }
80 return jContentPane;
81 }
82
83 /**
84 * Crea el JComboBox y lo inicializa con el listado de clientes de la aplicación.
85 * Por defecto son 10 clientes generados de manera automática con un bucle.
Añadiendo el número de iteración a un texto fijo.
86 * @return
87 */
88 private JComboBox getJComboBox() {
89 if (jComboBox == null) {
90 jComboBox = new JComboBox();
91
92 //Se inicializa el JComboBox con el listado de clientes. Dicho listado se encuentra
en una tabla hash.
93 //Hay distintas formas de recuperar los valores de una tabla hash. Una de ellas es
obteniendo primeramente el listado
94 //de claves para posteriormente ir recuperando elemento a elemento.
95 for (Enumeration<String> enumeration = this.getListadoClientes().keys();
96 enumeration.hasMoreElements();){
97 String clave = (String)enumeration.nextElement();
98 jComboBox.addItem(this.getListadoClientes().get(clave));
99
100 }
101
102 jComboBox.setBounds(new Rectangle(68, 4, 215, 20));
103
104 //Añadimos un listener al combo para que cada vez que se selecciona un cliente se
actualize el listado de ventas activo.
105 jComboBox.addItemListener(new java.awt.event.ItemListener() {
106 public void itemStateChanged(java.awt.event.ItemEvent e) {
107 //Este método se ejecuta cuando se producen ciertos eventos. Nos interesa
que el código

Page 2
VentanaPrincipal.java

108 //sólo se ejecute cuando se ha seleccionado un elemento.


109 if (e.getStateChange() == ItemEvent.SELECTED){
110 //Recuperamos el cliente seleccionado.
111 Cliente cliente = (Cliente) getJComboBox().getSelectedItem();
112
113 //Establecemos las ventas activas con las que se corresponden con el
cliente.
114 setVentas(getVentasClientes().get(cliente.getDni()));
115
116 //Actualizamos la interfaz gráfica para que se muestren los datos.
117 getJScrollPane().updateUI();
118 }
119 }
120 });
121 }
122 return jComboBox;
123 }
124
125 /**
126 * Inicializa el ScrollPane que contiene la tabla.
127 * @return
128 */
129 private JScrollPane getJScrollPane() {
130 if (jScrollPane == null) {
131 jScrollPane = new JScrollPane();
132 jScrollPane.setBounds(new Rectangle(7, 30, 483, 171));
133 jScrollPane.setViewportView(getJTable());
134 }
135 return jScrollPane;
136 }
137
138 /**
139 * Inicializa la tabla que muestra los datos.
140 * @return
141 */
142 private JTable getJTable() {
143 if (jTable == null) {
144 jTable = new JTable();
145 //Se establece el modelo de la tabla, dicho modelo está representado
146 //por un objeto de la clase MiTableModel.
147 jTable.setModel(this.getModeloTabla());
148 }
149
150 return jTable;
151 }
152
153 /**
154 * Inicializa el modelo de la tabla. En este caso es un objeto de la clase MiTableModel.
155 *
156 * @return
157 */

Page 3
VentanaPrincipal.java

158 private MiTableModel getModeloTabla(){


159 if (modeloTabla == null)
160 //Se le pasa como parámetro la instancia actual para que el modelo pueda
recuperar el listado
161 //de ventas activo y así devolver los datos correctos.
162 modeloTabla = new MiTableModel(this);
163 return modeloTabla;
164 }
165
166 /**
167 * Inicializa el listado de clientes de la aplicación.
168 * @return
169 */
170 private Hashtable<String, Cliente> getListadoClientes() {
171 if (listadoClientes == null){
172 listadoClientes = new Hashtable<String, Cliente>();
173
174 //El valor de los atributos de cada objeto Cliente se genera de forma automática
mediante
175 //la unión de un texto fijo y el número de iteración.
176 for (int i = 1; i <= 10 ; i++){
177 Cliente cliente = new Cliente(""+i,"Nombre_"+i,"Apellidos_"+i,"Direccion_"+i);
178 listadoClientes.put(i+"", cliente);
179 }
180 }
181 return listadoClientes;
182 }
183
184 /**
185 * Inicializa el listado de ventas de los clientes. Para cada cliente se crea un listado de
objetos Venta.
186 * @return
187 */
188 public Hashtable<String, ArrayList<Ventas>> getVentasClientes() {
189 if (listadoVentasCliente == null){
190 listadoVentasCliente = new Hashtable<String, ArrayList<Ventas>>();
191
192 //Para cada cliente guardamos una serie de ventas.
193 for (Enumeration<String> enumeration = this.getListadoClientes().keys();
194 enumeration.hasMoreElements();){
195 String clave = (String)enumeration.nextElement();
196 String idCliente = ((Cliente)this.getListadoClientes().get(clave)).getDni();
197
198 //El valor de los atributos de cada objeto Venta se genera de forma automática
mediante
199 //la unión de un texto fijo y el número de iteración.
200 ArrayList<Ventas>listadoVentas = new ArrayList<Ventas>();
201 for (int i = 1; i <= 9; i++){
202 Ventas venta = new
Ventas(""+idCliente+"_"+i,"Articulo_"+idCliente+"_"+i,"Cantidad_"+idCliente+"_"+i,
"Precio_"+idCliente+"_"+i);

Page 4
VentanaPrincipal.java

203 listadoVentas.add(venta);
204 }
205 listadoVentasCliente.put(idCliente+"", listadoVentas);
206 }
207 }
208 return listadoVentasCliente;
209 }
210
211 /**
212 * Recupera el listado de ventas de un cliente.
213 * @param idCliente Identificador del cliente cuyas ventas se desea recuperar.
214 * @return
215 */
216 public List<Ventas> getVentasCliente(String idCliente){
217 return this.getVentasClientes().get(idCliente);
218 }
219
220 /**
221 * Obtiene el listado de ventas activo. Es decir, el listado de ventas del cliente
seleccionado.
222 * @return
223 */
224 public List<Ventas> getVentas(){
225 if (ventas == null)
226 ventas = new ArrayList<Ventas>();
227 return ventas;
228 }
229
230 /**
231 * Establece el listado de ventas del cliente seleccionado.
232 * @param ventas Listado de ventas de un cliente.
233 */
234 public void setVentas(List<Ventas> ventas){
235 this.getVentas().clear();
236 this.getVentas().addAll(ventas);
237 }
238
239 /**
240 * Obtiene un listado con el nombre de las columnas de la tabla.
241 * @return
242 */
243 public String[] getNombreColumnas(){
244 return nombreColumnas;
245 }
246
247 /**
248 * Obtiene el identificador del cliente seleccionado.
249 * @return
250 */
251 public String getIdCliente(){
252 return ((Cliente)getJComboBox().getSelectedItem()).getDni();

Page 5
VentanaPrincipal.java

253 }
254 }

Page 6

You might also like