Sei sulla pagina 1di 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. //Hay distintas formas de recuperar los valores de una tabla hash. Una de ellas es obteniendo primeramente el listado //de claves para posteriormente ir recuperando elemento a elemento. for (Enumeration<String> enumeration = this .getListadoClientes().keys(); enumeration.hasMoreElements();){

93

94

95

96

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

253

}

254

}

VentanaPrincipal.java