Usuario:ManuelRomero/Interfaz
De WikiEducator
< Usuario:ManuelRomero
Revisión a fecha de 04:36 12 may 2012; ManuelRomero (Discusión | contribuciones)
Interfaz Cliente clase ICliente
- Definimos los elementos gráficos
- Asociamos eventos a los botones
- Escribimos el código de cada evento
- Mantenemos relación con objetos de otras clases (Conexion Cliente)
- Escribimos el método main
import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import java.awt.Event.*; import java.sql.*; /** * This code was edited or generated using CloudGarden's Jigloo * SWT/Swing GUI Builder, which is free for non-commercial * use. If Jigloo is being used commercially (ie, by a corporation, * company or business for any purpose whatever) then you * should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. * Use of Jigloo implies acceptance of these licensing terms. * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ public class ICliente extends JFrame{ // Definición de objetos gráficos para el interfaz private JLabel lNum = new JLabel ("Número"); private JTextField tNum = new JTextField(5); private JLabel lApellido = new JLabel("Apellido"); private JTextField tApellido = new JTextField (5); private JLabel lNombre = new JLabel("Nombre"); private JTextField tNombre = new JTextField (5); private JFormattedTextField tDNI; private JLabel lDNI= new JLabel ("DNI"); private JTextField tDireccion = new JTextField(10); private JLabel lDireccion = new JLabel("Dirección"); private JButton bPrimero = new JButton("primero"); private JButton bAnterior = new JButton("anterior"); private JButton bSiguiente= new JButton("siguiente"); private JButton bUltimo = new JButton("ultimo"); private JButton bInsertar= new JButton("insertar"); private JButton bNuevo = new JButton("nuevo"); private JLabel lTitulo = new JLabel("Clientes y sus cuentas bancarias"); //Paneles contenedores además del contenedor principal que es el frame private JPanel pDatos = new JPanel(); private JPanel pBotones = new JPanel(); private JPanel pCuentas = new JPanel(); // Layout para distribución de objetos en el contenedor //Definimos los layouts que vamos a utilizar private BoxLayout lPpal = new BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS); private BoxLayout bxL = new BoxLayout(this.getContentPane(),BoxLayout.LINE_AXIS); private GridBagLayout pDatosLayout = new GridBagLayout(); private FlowLayout lPBotones = new FlowLayout(); //Objetos para los menús private JMenuItem mIDesconectar= new JMenuItem("Desconectar"); private JMenuItem mIConectar= new JMenuItem("Conectar"); private JMenu mPpal= new JMenu("Bases de datos"); private JMenuBar barraMenu = new JMenuBar(); //para poderme comunciar con otras clases private Conexion conexion; //static para poder ser usada en el main que es static private Cliente cliente = new Cliente(); private ResultSet clientes; //Para trabajar con el resultado de una consulta concreta //Objetos para el jTable y DefaultTableModel private DefaultTableModel modelo = new DefaultTableModel(); private JTable taCuentas = new JTable(modelo); private JScrollPane scroll; public ICliente(){ //Ponemos los layout // pBotones.setLayout(fL); //Añadimos los layout //Le añadimos el layout a la ventana principal setLayout(lPpal); //Pongo el label del título de la página en grande //y lo añadimos lTitulo.setFont(new java.awt.Font("Segoe UI",3,26)); lTitulo.setForeground(new java.awt.Color(128,128,192)); lTitulo.setPreferredSize(new java.awt.Dimension(571, 36)); lTitulo.setAlignmentY(0.0f); add(lTitulo); this.setJMenuBar(barraMenu); crearPanelBotones(); crearPanelDatos(); crearPanelCuentas(); creaMenu(); //Agregamos los paneles al JFrame principal add(pDatos); add(pCuentas); add(pBotones); //Colocamos y visualizamos el JFrame this.setBounds(0, 0, 600, 335); setTitle("Recorrido de la tabla Clientes"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); //Agregamos este objeto a los botones desde los que quieremos recoger el evento //Realizamos la consulta para después moverme sobre ella (avanzar o retroceder). } /** * Este método crea el panel de los botones */ private void crearPanelBotones(){ pBotones.setLayout(lPBotones); //Ponemos un border al panel de botones pBotones.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, new java.awt.Color(255,128,64), new java.awt.Color(255,128,64), new java.awt.Color(255,128,64), new java.awt.Color(255,128,64))); pBotones.setPreferredSize(new java.awt.Dimension(584, 39)); //primero los contenidos a los paneles pBotones.add(bPrimero); pBotones.add(bSiguiente); pBotones.add(bAnterior); pBotones.add(bUltimo); //Añadimos a los botones los eventos bPrimero.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickPrimero(); //TODO add your code for mIConectar.actionPerformed } }); bAnterior.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickAnterior(); //TODO add your code for mIConectar.actionPerformed } }); bSiguiente.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickSiguiente(); //TODO add your code for mIConectar.actionPerformed } }); bUltimo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickUltimo(); //TODO add your code for mIConectar.actionPerformed } }); } public void crearPanelDatos(){ pDatos.setLayout(pDatosLayout); pDatos.setBorder(BorderFactory.createTitledBorder(null, "Datos Cliente", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI",3,14), new java.awt.Color(0,0,255))); pDatos.setPreferredSize(new java.awt.Dimension(912, 147)); pDatosLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1}; pDatosLayout.rowHeights = new int[] {7, 7, 7, 7}; pDatosLayout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1}; pDatosLayout.columnWidths = new int[] {7, 7, 7, 7}; pDatos.add(lNum, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); lNum.setText("Número de cliente"); pDatos.add(tNum, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); pDatos.add(lNombre, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 2, 0, 0), 0, 0)); pDatos.add(tNombre, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); pDatos.add(lApellido, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); pDatos.add(tApellido, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); pDatos.add(lDireccion, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); tDireccion = new JTextField(); pDatos.add(tDireccion, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); tDireccion.setColumns(10); pDatos.add(lDNI, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); tDNI = new JFormattedTextField(); pDatos.add(tDNI, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); tDNI.setColumns(10); } public void crearPanelCuentas(){ pCuentas.setBorder(BorderFactory.createTitledBorder("Cuentas Bancarias de cliente")); modelo = new DefaultTableModel(); taCuentas = new JTable(modelo); taCuentas.setPreferredScrollableViewportSize(new Dimension(500,50)); scroll = new JScrollPane(taCuentas); pCuentas.add(scroll); getContentPane().add(pCuentas); pCuentas.setSize(584, 200); pCuentas.setPreferredSize(new java.awt.Dimension(584, 500)); getContentPane().add(pCuentas); } public void creaMenu(){ mPpal.add(mIConectar); mPpal.add(mIDesconectar); barraMenu.add(mPpal); mIConectar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickConectar(); //TODO add your code for mIConectar.actionPerformed } }); mIDesconectar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clickDesconectar(); //TODO add your code for mIConectar.actionPerformed } }); //Cremos un objeto escuchador de la interfaz ActionListener } public void cargaDatos(Cliente c){ tNombre.setText(c.getNombre()); tApellido.setText(c.getApellido()); tNum.setText(c.getNumero().toString()); } private void clickDesconectar(){ } private void clickSiguiente(){ //Verifico que no estoy en el último try{ if (clientes.isLast()){ JOptionPane.showMessageDialog(null,"Estás en el último"); }else clientes.next(); cliente.setDatosCliente(clientes); cargarCliente(); }catch(SQLException e){ System.out.println("Error en clickSiguiente "+e.getMessage()); } } private void clickPrimero(){ } private void clickAnterior(){ } private void clickUltimo(){ } private void clickConectar(){ try{ System.out.println("Intentando conectar"); if (conexion==null){ conexion = new Conexion(); clientes = conexion.hacerConsulta("Select * from clientes"); System.out.println("Creada consulta y consultado clientes"); if (clientes.next()){ cliente.setDatosCliente(clientes); cargarPrimerCliente(); } else{ System.out.println("Actualmente no hay clientes"); } } else JOptionPane.showMessageDialog(this,"Actualmente conectado a la BD"); } catch(SQLException e){ System.out.println("Error haciendo la conexión en interfaz"); } } private void cargarPrimerCliente(){ try{ /* if (clientes.isFirst()) JOptionPane.showMessageDialog(this,"Este es el primer registro"); else */ if (clientes.first()){ cargarCliente(); } }catch(SQLException e){ System.out.println("Visualizando el primero cliente"); } } private void cargarCliente(){ tNum.setText(""+cliente.getNumero()); tNombre.setText(cliente.getNombre()); tApellido.setText(cliente.getApellido()); tDireccion.setText(cliente.getDireccion()); tDNI.setText(cliente.getDni()); try{ System.out.println("Valor del cliente antes "+clientes.getString("nombre")); rellenaCuentasSocio(cliente.getNumero()); }catch(SQLException e){ System.out.println("En carga cliente "+e.getMessage()); } } private void rellenaCuentasSocio(int numSocio){ //Obetener información de un meta try{ //Para inicializar el modelo a 0 filas y 0 columnas //(Para perder los datos anteriores) modelo.setRowCount(0); modelo.setColumnCount(0); //Creamos un nuevo resultset para recuperar en una consulta //Las cuentas del socio actual ResultSet ccc; System.out.println("Valor del socio antes de hacer ccc"+clientes.getString(1)); ccc=conexion.hacerConsulta("Select * from cuentaBancaria where cliente = "+numSocio); System.out.println("Valor del socio despues de ccc"+clientes.getString(1)); //Necesitamos información sobre la consulta hecha // ResultSetMetaData rsmd = ccc.getMetaData(); //Información de la consulta del número de filas int columnas= rsmd.getColumnCount(); System.out.println("Se han encontrado "+columnas +"columnas"); //Alternativa para rellenar la cabecera de la tabla /* Object[] etiquetas = new Object[columnas]; for (int i = 0; i < columnas; i++) { etiquetas[i] = rsmd.getColumnLabel(i + 1); } // Se meten las etiquetas en el modelo. El numero // de columnas se ajusta automáticamente. modelo.setColumnIdentifiers(etiquetas); */ //Rellenamos en la tabla con tantas columnas como campos tiene la consulta for (int i=1;i<=columnas;i++){ //Cada columna que rellenamos ponemos el título del campo modelo.addColumn(rsmd.getColumnName(i)); System.out.println("Rellenando el campo"+rsmd.getColumnName(i)); } //Ahora cargamos el contenido de la consulta en la tabla while (ccc.next()){ // Se crea un array que será una de las filas de la tabla. Object [] fila = new Object[columnas]; // Se rellena cada posición del array //Con cada fila de la consulta for (int i=0;i<columnas;i++) fila[i] = ccc.getObject(i+1); // Se añade al modelo la fila completa. modelo.addRow(fila); } }catch(SQLException e){ System.out.println("Error en la tablita Se han encontrado "+e.getMessage()); } } private void actualizaCuentasSocio(int numSocio){ //Obetener información de un meta try{ modelo.setRowCount(0); ResultSet ccc; System.out.println("Consultando del cliente "+numSocio); ResultSet m = clientes; System.out.println("Valor del cliente despues de hacer ccc "+m.getString("nombre")); ccc=conexion.hacerConsulta("Select * from cuentaBancaria where cliente = "+numSocio); ResultSetMetaData rsmd = ccc.getMetaData(); int columnas= rsmd.getColumnCount(); System.out.println("Se han encontrado "+columnas +"columnas"); /* Object[] etiquetas = new Object[columnas]; for (int i = 0; i < columnas; i++) { etiquetas[i] = rsmd.getColumnLabel(i + 1); } // Se meten las etiquetas en el modelo. El numero // de columnas se ajusta automáticamente. modelo.setColumnIdentifiers(etiquetas); */ for (int i=0;i<columnas;i++){ modelo.addColumn(rsmd.getColumnName(i+1)); System.out.println("chivato 2 "+rsmd.getColumnName(i+1)); } while (ccc.next()){ // Se crea un array que será una de las filas de la tabla. Object [] fila = new Object[columnas]; // Hay tres columnas en la tabla // Se rellena cada posición del array con una de las columnas de la tabla en base de datos. for (int i=0;i<columnas;i++) fila[i] = ccc.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1. // Se añade al modelo la fila completa. modelo.addRow(fila); //modelo.setValueAt("",0,0); } }catch(SQLException e){ System.out.println("Error en la tablita Se han encontrado "+e.getMessage()); } } public static void main(String []s){ ICliente ventanaCliente = new ICliente(); } }//End class