-
121
121
JTable
La clase JTable nos permite organizar una determinada informacin en un
tabla. Esta clase tiene ms de 100 mtodos. La JTable controla cmo se
presentan los datos, siendo el TableModel quien controla los datos en s
mismos. Para crear una JTable habr pues que crear un TableModel antes,
normalmente. Se puede implementar, para ello, el interfaz TableModel, pero es
mucho ms simple heredar de la clase ayuda AbstractTableModel.
1. Clases e Interfaces Relacionados con las Tablas
Clase/Interface Propsito
OBJETIVOS
Construir aplicaciones utilizando la clase JTable y JTree
Utilizar la clase JTable para la creacin de aplicaciones con Base de datos.
Mi PCResaltar
Mi PCResaltar
Mi PCResaltar
Mi PCResaltar
-
122
122
JTable El componente que presenta la tabla al usuario.
JTableHeader El componente que presenta los nombres de columnas al usuario. Por defecto, la tabla genera este componente automticamente.
TableModel, AbstractTableModel
Respectivamente, el interface que un modelo de tabla debe implementar y la superclase usual para implementaciones de modelos de tabla.
TableCellRenderer, DefaultTableCellRenderer
Respectivamente, el interface que un intrprete de celda debe implementar y la implementacin ms usual.
TableCellEditor, DefaultCellEditor
Respectivamente, el interface que debe implementar un editor de celda, y la implementacin ms usual.
TableColumnModel, DefaultTableColumnModel
Respectivamente, el interface que debe implementar un modelo de columna, y su implementacin usual. Normalmente no tenemos que tratar directamente con el modelo de columna a menos que necesitemos obtener el modelo de seleccin de columna u obtener un ndice de columna o un objeto.
TableColumn
Controla todos los atributos de una columna de la tabla, incluyendo, redimensionado, anchuras mnima, mxima, preferida y actual; y editor/intrprete opcional especfico de la columna.
DefaultTableModel Un modelo de tabla basado en Vector utilizado por JTable cuando construimos una tabla sin especificar modelo de datos ni datos.
Crear y Configurar una Tabla
Mtodo/Constructor de JTable Propsito
JTable(TableModel)
JTable(TableModel, TableColumnModel)
JTable(TableModel, TableColumnModel, ListSelectionModel)
JTable()
JTable(int, int)
Crea una tabla. El argumento opcional TableModel especifica el modelo que proporciona los datos de la tabla. Los argumentos opcionales TableColumnModel y ListSelectionModel permiten especificar el modelo de columna y el modelo de seleccin.
-
123
123
JTable(Object[][], Object[])
JTable(Vector, Vector)
Como una alternativa para especificar un modelo de tabla, podemos suministrar datos y nombres de columnas utilizando un array o un Vector. Otra opcin es no especificar datos, opcionalmente especificar el nmero de filas y columnas (ambos enteros) que hayan en la tabla.
void setPreferredScrollableViewportSize(Dimension)
Selecciona el tamao de la parte visible de la tabla cuando se est viendo dentro de un ScrollPane.
JTableHeader getTableHeader(Dimension) Obtiene el componente que muestra los nombres de columnas.
Manipular Columnas
Mtodo Propsito
TableColumnModel getColumnModel()
(en JTable)
Obtiene el modelo de columna de la tabla.
TableColumn getColumn(int)
Enumeration getColumns()
(en TableColumnModel)
Obtiene uno o todos los objetos TableColumn de la tabla.
void setMinWidth(int)
void setPreferredWidth(int)
void setMaxWidth(int)
(en TableColumn)
Seleciona la anchura mnima, preferida o mxima de la columna.
int getMinWidth(int)
int getPreferredWidth() Obtiene la anchura mnima, preferida, mxima o actual de la columna.
-
124
124
int getMaxWidth()
int getWidth()
(en TableColumn)
Usar Editores e Intrpretes
Mtodos Propsito
void setDefaultRenderer(Class, TableCellRenderer)
void setDefaultEditor(Class, TableCellEditor)
(en JTable)
Selecciona el intrprete o editor usado, por defecto, para todas las celdas en todas las columnas que devuelvan el tipo de objetos especificado.
void setCellRenderer(TableCellRenderer)
void setCellEditor(TableCellEditor)
(en TableColumn)
Selecciona el intrprete o editor usado para todas las celdas de esta columna.
TableCellRenderer getHeaderRenderer()
(en TableColumn)
Obtiene el intrprete de cabecera para esta columna, que podemos personalizar.
Implementar Seleccin
Mtodo de JTable Propsito
void setSelectionMode(int)
Selecciona los intervalos de seleccin permitidos en la tabla. Los valores vlidos estn definidos en ListSelectionModel como SINGLE_SELECTION, SINGLE_INTERVAL_SELECTION, y MULTIPLE_INTERVAL_SELECTION (por defecto).
void setSelectionModel(ListSelectionModel)
ListSelectionModel getSelectionModel()
Selecciona u obtiene el modelo usado para controlar las selecciones de filas.
-
125
125
void setRowSelectionAllowed(boolean)
void setColumnSelectionAllowed(boolean)
void setCellSelectionEnabled(boolean)
Selecciona la orientacin de seleccin de la tabla. El argumento booleano especifica si est permitido el tipo de seleccin particular. Por defecto, las seleccin de filas est permitida, y la de columna y celda no.
2. Utilizando TableModel
Como se ha visto, toda tabla obtiene sus datos desde un objeto que implemente el interface TableModel.
El constructor de JTable usado por SimpleTableDemo crea su modelo de tabla con este cdigo.
new AbstractTableModel() { public String getColumnName(int col) { return columnNames[col].toString(); } public int getRowCount() { return rowData.length; } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int row, int col) { return rowData[row][col]; } public boolean isCellEditable(int row, int col) { return true; } public void setValueAt(Object value, int row, int col) { rowData[row][col] = value; fireTableCellUpdated(row, col); } }
Ejemplo:
Se puede movilizar las columnas y seleccinar las filas que se desee.
-
126
126
import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; import com.sun.java.swing.table.*; import com.sun.java.swing.event.*; // El Modelo de la Tabla es el que controla todos los // datos que se colocan en ella class ModeloDatos extends AbstractTableModel { Object datos[][] = { {"uno","dos","tres","cuatro"}, {"cinco","seis","siete","ocho"}, {"nueve","diez","once","doce"}, }; // Esta clase imprime los datos en la consola cada vez // que se produce un cambio en cualquiera de las // casillas de la tabla class TablaListener implements TableModelListener { public void tableChanged( TableModelEvent evt ) { for( int i=0; i < datos.length; i++ ) { for( int j=0; j < datos[0].length; j++ ) System.out.print( datos[i][j] + " " ); System.out.println(); } } } // Constructor ModeloDatos() { addTableModelListener( new TablaListener() ); } // Devuelve el nmero de columnas de la tabla public int getColumnCount() { return( datos[0].length ); } // Devuelve el nmero de filas de la tabla
Mi PCResaltar
-
127
127
public int getRowCount() { return( datos.length ); } // Devuelve el valor de una determinada casilla de la tabla // identificada mediante fila y columna public Object getValueAt( int fila,int col ) { return( datos[fila][col] ); } // Cambia el valor que contiene una determinada casilla de // la tabla public void setValueAt( Object valor,int fila,int col ) { datos[fila][col] = valor; // Indica que se ha cambiado fireTableDataChanged(); } // Indica si la casilla identificada por fila y columna es // editable public boolean isCellEditable( int fila,int col ) { return( true ); } } public class ejercicio extends JPanel { public ejercicio () { setLayout( new BorderLayout() ); JTable tabla = new JTable( new ModeloDatos() ); // La tabla se aade a un ScrollPane para que sea ste el // que controle automticamente en tamao de la tabla, // presentando una barra de desplazamiento cuando sea // necesario JScrollPane panel = new JScrollPane( tabla ); add( panel,BorderLayout.CENTER ); } public static void main(String args[]) { JFrame frame = new JFrame( "Tutorial de Java, Swing" ); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent evt ) { System.exit( 0 ); } } ); frame.getContentPane().add( new java1416(),BorderLayout.CENTER );
-
128
128
frame.setSize( 200,200 ); frame.setVisible( true ); } }
ACTIVIDAD
Cree la siguiente aplicacin el cual se pueda agregar registro a una tabla.
public class Panel extends JPanel implements MouseListener{
// --- Creando model y tabla
ModeloTabla mt = new ModeloTabla();
JTable jt = new JTable();
// --- Creando componentes para el ingreso de datos
JPanel panelInferior = new JPanel();
JLabel lblCodigo = new JLabel("Cdigo");
JLabel lblNombre = new JLabel("Nombre");
JLabel lblDireccion = new JLabel("Direccin");
-
129
129
JLabel lblFoto = new JLabel("Foto");
JTextField txtCodigo = new JTextField();
JTextField txtNombre = new JTextField();
JTextField txtDireccion = new JTextField();
JTextField txtFoto = new JTextField();
JButton b1 = new JButton("Aadir");
JButton b2 = new JButton("Modificar");
// ---
ListaPersonas lpersonas = new ListaPersonas();
public Panel(){
jt.setModel(mt);
setLayout(new GridLayout(2,1));
add(new JScrollPane(jt));
// --- panel para ingreso de datos
panelInferior.setLayout(new GridLayout(5,2));
panelInferior.add(lblCodigo);
panelInferior.add(txtCodigo);
panelInferior.add(lblNombre);
panelInferior.add(txtNombre);
panelInferior.add(lblDireccion);
panelInferior.add(txtDireccion);
panelInferior.add(lblFoto);
panelInferior.add(txtFoto);
panelInferior.add(b1);
-
130
130
panelInferior.add(b2);
add(panelInferior);
b1.addMouseListener(this);
b2.addMouseListener(this);
jt.addMouseListener(this); // --- asociamos listener a la tabla
}
public void mouseClicked(MouseEvent arg0) {
// --- Boton aadir Registro
if (arg0.getSource().equals(b1)){
Persona p = lpersonas.buscar(txtCodigo.getText());
// --- Si no existe la persona
if (p==null) {
p = new Persona();
p.setCodigo(txtCodigo.getText());
p.setNombre(txtNombre.getText());
p.setDireccion(txtDireccion.getText());
p.setFoto(txtFoto.getText());
// --- agregamos a la lista
lpersonas.adicionar(p);
// --- recuperando data actual del model
Vector dataActual = mt.data;
Vector nuevaFila = new Vector();
nuevaFila.add( txtCodigo.getText());
-
131
131
nuevaFila.add( txtNombre.getText());
nuevaFila.add( txtDireccion.getText());
// --- agregando nueva fila a data actual
dataActual.add(nuevaFila);
// --- retornando dataActual al model
mt.setData(dataActual);
mt.insertaData(p);
}
}
// --- boton modificar
if (arg0.getSource().equals(b2)){
Persona p = lpersonas.buscar(txtCodigo.getText());
if (p!=null) {
p.setCodigo(txtCodigo.getText());
p.setNombre(txtNombre.getText());
p.setDireccion(txtDireccion.getText());
p.setFoto(txtFoto.getText());
// --- Obtenemos la fila seleccionada en el JTable
int filSel = jt.getSelectedRow();
// --- Actualizando listaPersona
lpersonas.insertar(p,filSel);
lpersonas.remover(filSel+1);
Vector dataActual = mt.data;
-
132
132
Vector filaModificada = new Vector();
filaModificada.add(txtCodigo.getText());
filaModificada.add(txtNombre.getText());
filaModificada.add(txtDireccion.getText());
dataActual.insertElementAt(filaModificada,filSel);
dataActual.removeElementAt(filSel+1);
mt.setData(dataActual);
}
}
// --- El JTable
if (arg0.getSource().equals(jt)){
// --- Recuperamos el numero de la fila seleccionada
int filSel = jt.getSelectedRow();
// --- recuperando el codigo
String codigoSel = jt.getValueAt(filSel,0).toString();
Persona p = lpersonas.buscar(codigoSel);
txtCodigo.setText(p.getCodigo());
txtNombre.setText(p.getNombre());
txtDireccion.setText(p.getDireccion());
txtFoto.setText(p.getFoto());
}
}
-
133
133
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
} public void mouseEntered(MouseEvent arg0) {
} public void mouseExited(MouseEvent arg0) {
}
}
-
134
134
1. Creando al clienteBean
package Bean;
public class ClienteBean {
private Integer idcliente;
private String nombre;
private String apepaterno;
private String apematerno;
private String sexo;
private Integer edad;
private String numdocumento;
private String telefono;
private String email;
private String Ruc;
private String estado;
private String direccion;
public String getApematerno() {
OBJETIVOS
Implementar un sistema o aplicacin grfica utilizando Swing.
Presentar los entornos grficos del proyetco final.
-
135
135
return apematerno;
}
public void setApematerno(String apematerno) {
this.apematerno = apematerno;
}
public String getApepaterno() {
return apepaterno;
}
public void setApepaterno(String apepaterno) {
this.apepaterno = apepaterno;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public Integer getEdad() {
return edad;
}
public void setEdad(Integer edad) {
this.edad = edad;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public Integer getIdcliente() {
return idcliente;
}
public void setIdcliente(Integer idcliente) {
this.idcliente = idcliente;
}
public String getNombre() {
return nombre; }
public void setNombre(String nombre) {
this.nombre = nombre;
}
-
136
136
public String getNumdocumento() {
return numdocumento;
}
public void setNumdocumento(String numdocumento) {
this.numdocumento = numdocumento;
}
public String getRuc() {
return Ruc;
}
public void setRuc(String ruc) {
Ruc = ruc;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
}
2. Frame Cliente
package presentacion;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JToolBar;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JLabel; import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
-
137
137
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JRadioButton;
import javax.swing.ListSelectionModel;
import Bean.ClienteBean;
import Logic.GestorCliente;
import java.awt.Point;
public class FrmBuscarCliente extends JFrame {
private static final long serialVersionUID = 1L;
private GestorCliente g_cliente=null;
private FrmProforma ventProforma=null;
private FrmVentaPaquete ventMantenerPaquete=null;
List clientes=null;
private int modo;
private JPanel jContentPane = null;
private JToolBar tlbBuscarCliente = null;
private DefaultTableModel Modelo=null;
private Vector Detalle=null;
private Vector Encabezado=null;
private JButton btnLimpiar = null;
private JButton btnBuscar1 = null;
private JButton btnCancelar = null;
private JButton btnAceptar = null;
private JPanel pnlFiltros = null;
private JLabel lblCodigo = null;
private JTextField tbxCodigo = null;
private JLabel lblDni = null;
private JTextField tbxDni = null;
private JLabel lblApellido = null;
private JTextField tbxApellido = null;
private JRadioButton rbtnNatural = null;
private JLabel lblNatural = null;
private JRadioButton rbtnJuridico = null;
private JLabel lblJuridico = null; private JPanel pnlClientes = null;
private JScrollPane scrpMantCliente = null;
private JTable tblCliente = null;
-
138
138
private JLabel lbl_total = null;
private JLabel lblRegistros1 = null;
public FrmBuscarCliente(FrmProforma vent, FrmVentaPaquete
ventMantener) {
super();
Detalle=new Vector ();
Encabezado=new Vector();
Encabezado.add("Cdigo");
Encabezado.add("Nombre");
Encabezado.add("Ap. Paterno");
Encabezado.add("D.N.I");
Modelo=new DefaultTableModel(Detalle,Encabezado){
private static final long serialVersionUID = 1L;
public boolean isCellEditable (int rowIndex, int
columnIndex){
return false;
}
};;
this.ventProforma=vent;
this.ventMantenerPaquete=ventMantener;
g_cliente=new GestorCliente();
initialize();
this.rbtnNatural.setSelected(true);
this.setResizable(false);
}
private void initialize() {
this.setSize(459, 487);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lblRegistros1 = new JLabel();
lblRegistros1.setBounds(new Rectangle(29, 408, 141,
27));
lblRegistros1.setText("Registros encontrados:");
lbl_total = new JLabel();
lbl_total.setText("");
lbl_total.setSize(new Dimension(67, 27)); lbl_total.setLocation(new Point(185, 411));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getTlbBuscarCliente(), null);
-
139
139
jContentPane.add(getPnlFiltros(), null);
jContentPane.add(getPnlClientes(), null);
jContentPane.add(lbl_total, null);
jContentPane.add(lblRegistros1, null);
}
return jContentPane;
}
private JToolBar getTlbBuscarCliente() {
if (tlbBuscarCliente == null) {
tlbBuscarCliente = new JToolBar();
tlbBuscarCliente.setBounds(new Rectangle(0, 0, 451,
44));
tlbBuscarCliente.add(getBtnLimpiar());
tlbBuscarCliente.add(getBtnBuscar1());
tlbBuscarCliente.add(getBtnAceptar());
tlbBuscarCliente.add(getBtnCancelar());
}
return tlbBuscarCliente;
}
public void limpiar(){
this.tbxApellido.setText("");
this.tbxCodigo.setText("");
this.tbxDni.setText("");
Detalle.clear();
Modelo.fireTableDataChanged();
this.lbl_total.setText("");
}
private JButton getBtnLimpiar() {
if (btnLimpiar == null) {
btnLimpiar = new JButton();
btnLimpiar.setToolTipText("Limpiar");
btnLimpiar.setIcon(new
ImageIcon(getClass().getResource("/Iconos/limpiar.png")));
btnLimpiar.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); //
TODO Auto-generated Event stub actionPerformed() limpiar();
}
});
}
-
140
140
return btnLimpiar;
}
public void carga_en_table(List clientes){
Integer total=clientes.size();
lbl_total.setText(total.toString());
Detalle.clear();
if (clientes.size()>0)
{ Integer ind=0;
ClienteBean cliente=new ClienteBean();
Vector Fila;
while(ind
-
141
141
else
cliente.setIdcliente(0);
if(this.rbtnNatural.isSelected())
{cliente.setApepaterno(tbxApellido.getText());
cliente.setNumdocumento(tbxDni.getText());
clientes=this.g_cliente.getClientesxFiltros(cliente);
}
else
{cliente.setNombre(this.tbxApellido.getText());
cliente.setRuc(this.tbxDni.getText());
clientes=this.g_cliente.getClientesxFiltrosJ(cliente);
}
carga_en_table(clientes);
}
private JButton getBtnBuscar1() {
if (btnBuscar1 == null) {
btnBuscar1 = new JButton();
btnBuscar1.setToolTipText("Buscar");
btnBuscar1.setIcon(new
ImageIcon(getClass().getResource("/Iconos/Buscar.png")));
btnBuscar1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("click en buscar cliente"); // TODO Auto-generated Event stub
actionPerformed()
busca_clientes();
}
});
}
return btnBuscar1;
}
private JButton getBtnCancelar() {
if (btnCancelar == null) {
btnCancelar = new JButton();
btnCancelar.setToolTipText("Cancelar");
btnCancelar.setIcon(new ImageIcon(getClass().
getResource("/Iconos/salir.gif")));
btnCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
FrmBuscarCliente.this.dispose();
-
142
142
}
});
}
return btnCancelar;
}
public void carga_datos_linea(){
if (tblCliente.getSelectedRow()==-1)
JOptionPane.showMessageDialog(this, "Debe
seleccionar una fila.", "Bsqueda Cliente",JOptionPane.ERROR_MESSAGE);
else{
ClienteBean c=new ClienteBean();
c=(ClienteBean)clientes.get(tblCliente.getSelectedRow());
if(modo==0)
this.ventProforma.setCliente(c);
else
this.ventMantenerPaquete.setCliente(c);
this.dispose();
}
}
private JButton getBtnAceptar() {
if (btnAceptar == null) {
btnAceptar = new JButton();
btnAceptar.setIcon(new
ImageIcon(getClass().getResource("/Iconos/button_ok.png")));
btnAceptar.setToolTipText("Aceptar");
btnAceptar.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
//FrmBuscarCliente.this.dispose();
if(Detalle.size()>0)
carga_datos_linea();
else
JOptionPane.showMessageDialog(FrmBuscarCliente.this, "Deber seleccionar un
cliente.", "Bsqueda Cliente",JOptionPane.ERROR_MESSAGE);
}
}); }
return btnAceptar;
}
-
143
143
private JPanel getPnlFiltros() {
if (pnlFiltros == null) {
lblJuridico = new JLabel();
lblJuridico.setBounds(new Rectangle(40, 60, 54, 20));
lblJuridico.setText("Jurdico");
lblNatural = new JLabel();
lblNatural.setBounds(new Rectangle(40, 30, 55, 20));
lblNatural.setText("Natural");
lblApellido = new JLabel();
lblApellido.setBounds(new Rectangle(122, 56, 79, 18));
lblApellido.setHorizontalTextPosition(SwingCon
stants.RIGHT);
lblApellido.setText("Ap. Paterno
:");
lblApellido.setHorizontalAlignment(SwingConstants.RIGHT);
lblDni = new JLabel();
lblDni.setBounds(new Rectangle(156, 86, 45, 18));
lblDni.setHorizontalTextPosition(SwingConstants.RIGHT);
lblDni.setText("D.N.I :");
lblDni.setHorizontalAlignment(SwingConstants.RIGHT);
lblCodigo = new JLabel();
lblCodigo.setBounds(new Rectangle(142, 28, 59, 18));
lblCodigo.setHorizontalTextPosition(SwingConstants.RIGHT);
lblCodigo.setText("Cdigo :");
lblCodigo.setHorizontalAlignment(SwingConstants.RIGHT);
pnlFiltros = new JPanel();
pnlFiltros.setLayout(null);
pnlFiltros.setBounds(new Rectangle(22, 62, 410, 134));
pnlFiltros.setBorder(BorderFactory.createTitledBorder(null,
"Filtros", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new
Color(51, 51, 51)));
pnlFiltros.add(lblCodigo, null);
pnlFiltros.add(getTbxCodigo(), null);
pnlFiltros.add(lblDni, null);
pnlFiltros.add(getTbxDni(), null);
pnlFiltros.add(lblApellido, null);
pnlFiltros.add(getTbxApellido(), null);
pnlFiltros.add(getRbtnNatural(), null);
pnlFiltros.add(lblNatural, null); pnlFiltros.add(getRbtnJuridico(), null);
pnlFiltros.add(lblJuridico, null);
}
return pnlFiltros;
-
144
144
}
private JTextField getTbxCodigo() {
if (tbxCodigo == null) {
tbxCodigo = new JTextField();
tbxCodigo.setBounds(new Rectangle(211, 26, 142, 20));
}
return tbxCodigo;
}
private JTextField getTbxDni() {
if (tbxDni == null) {
tbxDni = new JTextField();
tbxDni.setBounds(new
Rectangle(211, 87, 142, 20));
}
return tbxDni;
}
private JTextField getTbxApellido() {
if (tbxApellido == null) {
tbxApellido = new JTextField();
tbxApellido.setBounds(new Rectangle(211, 54, 142, 20));
}
return tbxApellido;
}
private JRadioButton getRbtnNatural() {
if (rbtnNatural == null) {
rbtnNatural = new JRadioButton();
rbtnNatural.setBounds(new Rectangle(15, 29, 25, 20));
rbtnNatural.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
cambia_check(0);
}
});
}
return rbtnNatural; }
private JRadioButton getRbtnJuridico() {
if (rbtnJuridico == null) {
-
145
145
rbtnJuridico = new JRadioButton();
rbtnJuridico.setBounds(new Rectangle(15, 59, 25, 20));
rbtnJuridico.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
cambia_check(1);
}
});
}
return rbtnJuridico;
}
private JPanel getPnlClientes() {
if (pnlClientes == null) {
pnlClientes = new JPanel();
pnlClientes.setLayout(null);
pnlClientes.setBounds(new Rectangle(26, 209, 404, 182));
pnlClientes.setBorder(BorderFactory.createTitledBorder(null,
"Clientes", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new
Color(51, 51, 51)));
pnlClientes.add(getScrpMantCliente(), null);
}
return pnlClientes;
}
private JScrollPane getScrpMantCliente() {
if (scrpMantCliente == null) {
scrpMantCliente = new JScrollPane();
scrpMantCliente.setBounds(new Rectangle(15, 29, 360,
125));
scrpMantCliente.setViewportView(getTblCliente
());
}
return scrpMantCliente;
}
public void cambia_check(Integer modo){
//Si modo=0 entonces es natural //Sino es jurdico
if(modo==0)
{this.rbtnNatural.setSelected(true);
this.rbtnJuridico.setSelected(false);
-
146
146
this.lblApellido.setText("Ap.Paterno :");
this.lblDni.setText("D.N.I :");
Encabezado.removeAllElements();
Encabezado.add("Cdigo");
Encabezado.add("Nombre");
Encabezado.add("Ap. Paterno");
Encabezado.add("Num. Documento");
}
else
{this.rbtnNatural.setSelected(false);
this.rbtnJuridico.setSelected(true);
this.lblApellido.setText("Empresa :");
this.lblDni.setText("R.U.C :");
Encabezado.removeAllElements();
Encabezado.add("Cdigo");
Encabezado.add("Empresa");
Encabezado.add("RUC");
Encabezado.add("Telfono");
}
Detalle.removeAllElements();
Modelo.fireTableDataChanged();
Modelo.fireTableStructureChanged();
this.lbl_total.setText("");
}
private JTable getTblCliente() {
if (tblCliente == null) {
tblCliente = new JTable(this.Modelo);
tblCliente.setSelectionMode(ListSelectionModel.SINGLE_SELECTIO
N);
tblCliente.getTableHeader().setReorderingAllowed(false);
tblCliente.addMouseListener(new
java.awt.event.MouseAdapter() {
public void
mouseClicked(java.awt.event.MouseEvent e) {
if (e.getClickCount()==2){
carga_datos_linea();
}
}
});
}
-
147
147
return tblCliente;
}
public void setModo(int modo){
this.modo=modo;
}
}
3. Mantenimientos de clientes
package presentacion;
import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.ListSelectionModel;
import javax.swing.border.TitledBorder;
import java.awt.Dimension;
import javax.swing.border.BevelBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;
import java.util.List;
import java.util.Vector;
import javax.swing.JScrollPane; import javax.swing.SwingConstants;
import Bean.ClienteBean;
import Logic.GestorCliente;
-
148
148
import javax.swing.JRadioButton;
public class FrmMantenimientoCliente extends JFrame {
private static final long serialVersionUID = 1L;
private GestorCliente g_cliente;
private JPanel jContentPane = null;
private JPanel pnlFiltros = null;
private JLabel lblCodigo = null;
private JTextField tbxCodigo = null;
private JLabel lblDni = null;
private JTextField tbxDni = null;
private JLabel lblApellido = null;
private JTextField tbxApellido = null;
private JPanel pnlClientes = null;
private JLabel lblRegistros = null;
private FrmNuevoCliente NuevoCliente=null;
private JScrollPane scrpMantCliente = null;
private JTable tblCliente = null;
private DefaultTableModel Modelo=null;
private Vector Detalle=null; // @jve:decl-index=0:
private Vector Encabezado=null;
private JToolBar tlbCliente = null;
private JButton btnLimpiar = null;
private JButton btnRegistrar = null;
private JButton btnModificar = null;
private JButton btnEliminar = null;
private JButton btnBuscar = null;
private JButton btnSalir = null;
-
149
149
private JLabel lblTotal = null;
private JRadioButton rbtnNatural = null;
private JLabel lblNatural = null;
private JRadioButton rbtnJuridico = null;
private JLabel lblJuridico = null;
public FrmMantenimientoCliente() {
super();
g_cliente=new GestorCliente();
Detalle=new Vector();
Encabezado=new Vector();
Modelo=new DefaultTableModel(Detalle,Encabezado){
private static final long serialVersionUID = 1L;
public boolean isCellEditable (int rowIndex, int columnIndex){
return false;
}
};;
initialize();
this.setResizable(false);
}
public void limpiar(){
this.tbxApellido.setText("");
this.tbxCodigo.setText("");
this.tbxDni.setText("");
Detalle.clear();
Modelo.fireTableDataChanged();
this.lblTotal.setText("");
}
public void carga_en_table(List clientes){
Integer total=clientes.size();
lblTotal.setText(total.toString());
Detalle.clear();
if (clientes.size()>0)
{ Integer ind=0;
ClienteBean cliente=new ClienteBean(); Vector Fila;
while(ind
-
150
150
//JOptionPane.showMessageDialog(this,usuario.getApmaterno(),
"Registrar Usuario",1);
if(rbtnNatural.isSelected())
{Fila.add(cliente.getIdcliente());
Fila.add(cliente.getNombre());
Fila.add(cliente.getApepaterno());
Fila.add(cliente.getNumdocumento());
}
else
{Fila.add(cliente.getIdcliente());
Fila.add(cliente.getNombre());
Fila.add(cliente.getRuc());
Fila.add(cliente.getTelefono());
}
Detalle.add(Fila);
ind++;
}
Modelo.fireTableDataChanged();
}
else
{
Detalle.clear();
Modelo.fireTableDataChanged();
}
}
public void busca_clientes(){
ClienteBean cliente=new ClienteBean();
List clientes;
if (!tbxCodigo.getText().equals(""))
cliente.setIdcliente(Integer.parseInt(tbxCodigo.getText()));
else
cliente.setIdcliente(0);
if(this.rbtnNatural.isSelected())
{cliente.setApepaterno(tbxApellido.getText());
cliente.setNumdocumento(tbxDni.getText());
clientes=this.g_cliente.getClientesxFiltros(cliente);
}
else
{cliente.setNombre(this.tbxApellido.getText());
cliente.setRuc(this.tbxDni.getText());
clientes=this.g_cliente.getClientesxFiltrosJ(cliente); }
carga_en_table(clientes);
}
-
151
151
public void modifica(){
if (tblCliente.getSelectedRow()==-1)
JOptionPane.showMessageDialog(this, "Debe seleccionar un
cliente.", "Mantenimiento de Cliente",JOptionPane.ERROR_MESSAGE);
else
{
if (NuevoCliente==null)
NuevoCliente= new FrmNuevoCliente();
NuevoCliente.setTipo(1);
NuevoCliente.setVentana_mantenimiento(this);
NuevoCliente.limpiar();
NuevoCliente.setDatos();
Vector linea=(Vector)Detalle.get(tblCliente.getSelectedRow());
Integer codigo=(Integer)linea.get(0);
if(!rbtnNatural.isSelected()){
NuevoCliente.setEsEmpresa(true);
}
else
NuevoCliente.setEsEmpresa(false);
NuevoCliente.carga_cliente(codigo);
NuevoCliente.setVisible(true);
}
}
private void elimina(){
if (tblCliente.getSelectedRow()==-1)
JOptionPane.showMessageDialog(this, "Debe
seleccionar un cliente.", "Mantenimiento de
Cliente",JOptionPane.ERROR_MESSAGE);
else
{
Vector linea=(Vector)Detalle.get(tblCliente.getSelectedRow());
Integer codigo=(Integer)linea.get(0);
Integer decision=JOptionPane.showConfirmDialog(this,"Desea eliminar el cliente?",
"Mantenimiento de Cliente", JOptionPane.YES_NO_OPTION);
if (decision==0)
{
boolean exito=this.g_cliente.elimina(codigo);
if (exito)
{JOptionPane.showMessageDialog(this, "Se
elimino con xito el cliente.", "Mantenimiento de
Cliente",JOptionPane.INFORMATION_MESSAGE);
this.busca_clientes();
-
152
152
}
else
JOptionPane.showMessageDialog(this, "No se pudo eliminar el cliente.",
"Mantenimiento de Cliente",JOptionPane.ERROR_MESSAGE);
}
}
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(437, 480);
this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().g
etResource("/Iconos/Contacto.png")));
this.setContentPane(getJContentPane());
this.setTitle("Mantenimiento de Clientes");
}
public void cambia_check(Integer modo){
//Si modo=0 entonces es natural
//Sino es jurdico
if(modo==0)
{this.rbtnNatural.setSelected(true);
this.rbtnJuridico.setSelected(false);
this.lblApellido.setText("Ap.Paterno :");
this.lblDni.setText("D.N.I :");
Encabezado.removeAllElements();
Encabezado.add("Cdigo");
Encabezado.add("Nombre");
Encabezado.add("Ap. Paterno");
Encabezado.add("Num.
Documento");
tblCliente.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tblCliente.getTableHeader().setReorderingAllowed(false);
tblCliente.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent e) {
if (e.getClickCount()==2)
modifica();
}
-
153
153
});
}
return tblCliente;
}
private JToolBar getTlbCliente() {
if (tlbCliente == null) {
tlbCliente = new JToolBar();
tlbCliente.setBounds(new Rectangle(2, 1, 427, 51));
tlbCliente.setBorder(BorderFactory.createBevelBorder(BevelBorder.R
AISED));
tlbCliente.setFloatable(false);
tlbCliente.add(getBtnLimpiar());
tlbCliente.add(getBtnRegistrar());
tlbCliente.add(getBtnModificar());
tlbCliente.add(getBtnEliminar());
tlbCliente.add(getBtnBuscar());
tlbCliente.add(getBtnSalir());
}
return tlbCliente;
}
private JButton getBtnLimpiar() {
if (btnLimpiar == null) {
btnLimpiar = new JButton();
btnLimpiar.setToolTipText("Limpiar");
btnLimpiar.setIcon(new
ImageIcon(getClass().getResource("/Iconos/limpiar.png")));
btnLimpiar.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
limpiar();
}
});
}
return btnLimpiar; }
-
154
154
rbtnJuridico.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
cambia_check(1);
}
});
}
return rbtnJuridico;
}
}
4. Men principal
package presentacion;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagLayout;
import javax.swing.SwingConstants;
import Bean.PermisoBean;
import Bean.UsuarioBean;
import Logic.GestorUsuario;
import java.awt.Color;
import java.util.List;
import java.awt.event.KeyEvent;
public class FrmMenuPrincipal extends JFrame {
private FrmMantenimientoCliente
mantCliente=null;
-
155
155
private FrmCambiarContrasena
vent_cambiarContrasena=null;
private FrmMantenerPaquete
vent_MantPaquete=null;
private FrmCargarRestaurantes vent_restaurantes;
private FrmReportes rep_venta;
private FrmReporteDestFrec rep_destinos;
private GestorUsuario g_usuario;
private FrmVentaPaquete vent_Ventas;
private FrmArmarPaquete armarPaquete=null;
private FrmMantSeguro MantSeguro=null;
private FrmMantUsuario vent_usuario=null;
private FrmMantTemporadas
MantTemporadas=null;
private FrmPromocion MantPromocion=null;
private FrmMantActividades
MantActividades=null;
private FrmCargarHoteles vent_cargarHotel=null;
private FrmCargarVuelos vent_cargarVuelo=null;
private FrmCargarViajesTerrestres
vent_cargarViajesTer=null;
private FrmCargarViajesMar
vent_cargarViajesMar=null;
private FrmMantPerfiles vent_perfil=null;
private FrmReporteTipoviaje rep_Tipoviaje=null;
private FrmReporteVentasXUsuario
rep_ventas=null;
private FrmDesbloquearReserva
vent_DesbReserva=null;
private UsuarioBean usuario; // @jve:decl-
index=0:
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu mnuMantenimientos = null;
private JMenu mnuVentas = null;
private JMenuItem mnuiUsuario = null;
private JMenu mnuReportes = null;
-
156
156
private JMenuItem mnuiCliente = null;
private JMenuItem mnuiPaquete = null;
private JMenuItem mnuiPerfil = null;
private JMenuItem mnuiArmarPaquete = null;
private JMenuItem mnuiSeguro = null;
private JMenuItem mnuiTemporadas = null;
private JMenuItem mnuiPromocion = null;
private JMenuItem mnuiActividades = null;
private JMenu mnuCargarXml = null;
private JMenuItem mnuiHoteles = null;
private JMenuItem mnuiVuelos = null;
private JMenuItem mnuiTerrestres = null;
private JMenuItem mnuiViajesMartimos = null;
private JMenu mnuOpciones = null;
private JMenuItem mnuiCambiarContrasena =
null;
private JLabel lblTiempo = null;
//private JLabel lblTiempoHilo = new JLabel();
private HiloHora Hilo;
private JMenuItem mnuiSalir = null;
private JLabel lblHoraHilo = null;
private JPanel pnlHora = null;
private JLabel lblUsuario = null;
private JLabel lblNombre = null;
private JToolBar tlbMenuPrincipal = null;
private JButton btnAyuda = null;
private JButton btnReporte = null;
private JButton btnSalir = null;
private JLabel jLabel = null;
private JMenuItem mnuiTipoViaje = null;
private JMenuItem mnuiVentasXUsuario = null;
private JMenuItem mnuiDesbloquearReserva =
null;
private JButton btnMantenimiento = null;
private JMenuItem mnuiCargarRestaurante =
null;
private JMenuItem mnuiDestinoFrecuente = null;
private JMenuItem mnuiVentas = null;
private JButton btnXml = null; private JMenuItem mnuiVta = null;
/**
* This is the default constructor
*/
-
157
157
public FrmMenuPrincipal() {
super();
lblHoraHilo=new JLabel();
//lblTiempo=new JLabel();
initialize();
Hilo=new HiloHora(this.lblHoraHilo);
Hilo.start();
//this.setExtendedState(JFrame.MAXIMIZED_B
OTH);
this.setResizable(false);
this.g_usuario=new GestorUsuario();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(655, 562);
//this.setExtendedState(Frame.MAXIMIZED_BO
TH);
this.setJMenuBar(getJJMenuBar());
this.setContentPane(getJContentPane());
this.setTitle("Menu Principal");
}
public void setObjUsuario(UsuarioBean
usuario){
this.usuario=usuario;
this.lblNombre.setText(usuario.getNombre()+"
"+usuario.getAppaterno());
}
/**
* This method initializes jContentPane
* * @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
-
158
158
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(-1,
69, 649, 371));
jLabel.setIcon(new
ImageIcon(getClass().getResource("/Iconos/travelsoft8.GIF")));
jLabel.setText("");
lblHoraHilo = new JLabel();
lblHoraHilo.setFont(new
Font("Dialog", Font.BOLD, 14));
lblHoraHilo.setBounds(new
Rectangle(456, 23, 163, 27));
lblHoraHilo.setForeground(Color.blue);
lblHoraHilo.setText("");
lblTiempo = new JLabel();
lblTiempo.setFont(new
Font("Dialog", Font.BOLD, 14));
lblTiempo.setBounds(new
Rectangle(286, 23, 153, 28));
lblTiempo.setHorizontalAlignment(SwingConsta
nts.RIGHT);
mnuMantenimientos.setText("Mantenimientos");
mnuMantenimientos.setMnemonic(KeyEvent.VK
_M);
mnuMantenimientos.add(getMnuiUsuario());
mnuMantenimientos.add(getMnuiCliente());
mnuMantenimientos.add(getMnuiPaquete());
mnuMantenimientos.add(getMnuiPerfil());
mnuMantenimientos.add(getMnuiSeguro());
mnuMantenimientos.add(getMnuiTemporadas());
mnuMantenimientos.add(getMnuiPromocion());
mnuMantenimientos.add(getMnuiActividades());
mnuMantenimientos.add(getMnuiVta());
-
159
159
}
return mnuMantenimientos;
}
/**
* This method initializes mnuVentas
*
* @return javax.swing.JMenu
*/
private JMenu getMnuVentas() {
if (mnuVentas == null) {
mnuVentas = new JMenu();
mnuVentas.setText("Ventas");
mnuVentas.setMnemonic(KeyEvent.VK_V);
mnuVentas.add(getMnuiArmarPaquete());
mnuVentas.add(getMnuiDesbloquearReserva());
}
return mnuVentas;
}
/**
* This method initializes mnuiUsuario
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiUsuario() {
if (mnuiUsuario == null) {
mnuiUsuario = new JMenuItem();
mnuiUsuario.setText("Usuario");
mnuiUsuario.setMnemonic(KeyEvent.VK_U);
mnuiUsuario.setEnabled(false);
mnuiUsuario.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if (vent_usuario==null)
vent_usuario=new
FrmMantUsuario(); vent_usuario.limpiar();
vent_usuario.setVisible(true);
}
-
160
160
});
}
return mnuiUsuario;
}
/**
* This method initializes mnuReportes
*
* @return javax.swing.JMenu
*/
private JMenu getMnuReportes() {
if (mnuReportes == null) {
mnuReportes = new JMenu();
mnuReportes.setText("Reportes");
mnuReportes.setMnemonic(KeyEvent.VK_R);
mnuReportes.add(getMnuiTipoViaje());
mnuReportes.add(getMnuiVentasXUsuario());
mnuReportes.add(getMnuiDestinoFrecuente());
mnuReportes.add(getMnuiVentas());
}
return mnuReportes;
}
/**
* This method initializes mnuiCliente
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiCliente() {
if (mnuiCliente == null) {
mnuiCliente = new JMenuItem();
mnuiCliente.setText("Cliente");
mnuiCliente.setMnemonic(KeyEvent.VK_C);
mnuiCliente.setEnabled(false);
mnuiCliente.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if
(mantCliente==null)
-
161
161
mantCliente=
new FrmMantenimientoCliente();
mantCliente.limpiar();
mantCliente.cambia_check(0);
mantCliente.setVisible(true);
}
});
}
return mnuiCliente;
}
private JMenuItem getMnuiPerfil() {
if (mnuiPerfil == null) {
mnuiPerfil = new JMenuItem();
mnuiPerfil.setText("Perfil");
mnuiPerfil.setMnemonic(KeyEvent.VK_F);
mnuiPerfil.setEnabled(false);
mnuiPerfil.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent
e) {
if (vent_perfil==null)
vent_perfil=new FrmMantPerfiles();
vent_perfil.limpiar();
vent_perfil.setVisible(true);
}
});
}
return mnuiPerfil;
}
private JMenuItem getMnuiArmarPaquete() {
if (mnuiArmarPaquete == null) {
mnuiArmarPaquete = new JMenuItem();
mnuiArmarPaquete.setText("Armar Paquete");
mnuiArmarPaquete.setMnemonic(KeyEvent.VK_
Q);
-
162
162
mnuiArmarPaquete.setEnabled(false);
mnuiArmarPaquete.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("1");
if
(armarPaquete==null)
armarPaquete= new FrmArmarPaquete();
armarPaquete.setUsuario(usuario);
armarPaquete.limpiartodo();
armarPaquete.setTipo(0);
armarPaquete.setVisible(true);
}
});
}
return mnuiArmarPaquete;
}
private JMenuItem getMnuiSeguro() {
if (mnuiSeguro == null) {
mnuiSeguro = new JMenuItem();
mnuiSeguro.setText("Seguro");
mnuiSeguro.setMnemonic(KeyEvent.VK_S);
mnuiSeguro.setEnabled(false);
mnuiSeguro.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent
e) {
if (MantSeguro==null)
MantSeguro= new FrmMantSeguro();
MantSeguro.actualiza();
MantSeguro.limpiar();
-
163
163
MantSeguro.setVisible(true);
}
});
}
return mnuiSeguro;
}
/**
* This method initializes mnuiTemporadas
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiTemporadas() {
if (mnuiTemporadas == null) {
mnuiTemporadas = new
JMenuItem();
mnuiTemporadas.setText("Temporadas");
mnuiTemporadas.setMnemonic(KeyEvent.VK_T
);
mnuiTemporadas.setEnabled(false);
mnuiTemporadas.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(MantTemporadas==null)
MantTemporadas= new FrmMantTemporadas();
MantTemporadas.setVisible(true);
}
});
}
return mnuiTemporadas;
}
/** * This method initializes mnuiPromocion
*
* @return javax.swing.JMenuItem
*/
-
164
164
private JMenuItem getMnuiPromocion() {
if (mnuiPromocion == null) {
mnuiPromocion = new
JMenuItem();
mnuiPromocion.setText("Promocin");
mnuiPromocion.setMnemonic(KeyEvent.VK_N);
mnuiPromocion.setEnabled(false);
mnuiPromocion.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(MantPromocion==null)
private JMenuItem getMnuiVuelos() {
if (mnuiVuelos == null) {
mnuiVuelos = new JMenuItem();
mnuiVuelos.setText("Vuelos
Areos");
mnuiVuelos.setEnabled(false);
mnuiVuelos.setMnemonic(KeyEvent.VK_UNDE
FINED);
mnuiVuelos.setToolTipText("Vuelos Areos");
mnuiVuelos.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(vent_cargarVuelo==null)
vent_cargarVuelo=new FrmCargarVuelos();
vent_cargarVuelo.setVisible(true);
}
});
}
return mnuiVuelos; }
/**
* This method initializes mnuiTerrestres
-
165
165
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiTerrestres() {
if (mnuiTerrestres == null) {
mnuiTerrestres = new JMenuItem();
mnuiTerrestres.setText("Viajes
Terrestres");
mnuiTerrestres.setEnabled(false);
mnuiTerrestres.setToolTipText("Viajes
Terrestres");
mnuiTerrestres.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(vent_cargarViajesTer==null)
vent_cargarViajesTer=new
FrmCargarViajesTerrestres();
vent_cargarViajesTer.setVisible(true);
}
});
}
return mnuiTerrestres;
}
/**
* This method initializes mnuiViajesMartimos
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiViajesMartimos() {
if (mnuiViajesMartimos == null) {
mnuiViajesMartimos = new
JMenuItem();
mnuiViajesMartimos.setText("Viajes
Martimos");
mnuiViajesMartimos.setEnabled(false);
mnuiViajesMartimos.setToolTipText("Viajes
Martimos");
-
166
166
mnuiViajesMartimos.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(vent_cargarViajesMar==null)
vent_cargarViajesMar=new
FrmCargarViajesMar();
vent_cargarViajesMar.setVisible(true);
}
});
}
return mnuiViajesMartimos;
}
/**
* This method initializes mnuOpciones
*
* @return javax.swing.JMenu
*/
private JMenu getMnuOpciones() {
if (mnuOpciones == null) {
mnuOpciones = new JMenu();
mnuOpciones.setText("Opciones");
mnuOpciones.setMnemonic(KeyEvent.VK_O);
mnuOpciones.add(getMnuiCambiarContrasena())
;
mnuOpciones.add(getMnuiSalir());
}
return mnuOpciones;
}
/**
* This method initializes
mnuiCambiarContrasena
*
* @return javax.swing.JMenuItem
*/ private JMenuItem getMnuiCambiarContrasena()
{
if (mnuiCambiarContrasena == null) {
-
167
167
mnuiCambiarContrasena = new
JMenuItem();
mnuiCambiarContrasena.setText("Cambiar
Contrasea");
mnuiCambiarContrasena.setMnemonic(KeyEvent
.VK_UNDEFINED);
mnuiCambiarContrasena.setEnabled(true);
mnuiCambiarContrasena.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(vent_cambiarContrasena==null)
vent_cambiarContrasena=new
FrmCambiarContrasena();
vent_cambiarContrasena.limpiar();
vent_cambiarContrasena.setobjUsuario(usuario);
vent_cambiarContrasena.setVisible(true);
}
});
}
return mnuiCambiarContrasena;
}
public void enables_forms(String permiso){
if (permiso.equals("m_cliente"))
this.mnuiCliente.setEnabled(true);
if(permiso.equals("m_usuario"))
this.mnuiUsuario.setEnabled(true);
if (permiso.equals("m_seguro"))
this.mnuiSeguro.setEnabled(true);
if (permiso.equals("m_promocion"))
this.mnuiPromocion.setEnabled(true);
if(permiso.equals("m_actividades"))
this.mnuiActividades.setEnabled(true);
if(permiso.equals("m_perfil"))
this.mnuiPerfil.setEnabled(true);
-
168
168
if (permiso.equals("m_paquete"))
this.mnuiPaquete.setEnabled(true);
if(permiso.equals("armar_paquete"))
this.mnuiArmarPaquete.setEnabled(true);
if (permiso.equals("m_temporadas"))
this.mnuiTemporadas.setEnabled(true);
if (permiso.equals("desbloquear_reserva"))
this.mnuiDesbloquearReserva.setEnabled(true);
if(permiso.equals("reportes"))
{
this.mnuiTipoViaje.setEnabled(true);
this.mnuiVentas.setEnabled(true);
this.mnuiVentasXUsuario.setEnabled(true);
this.mnuiDestinoFrecuente.setEnabled(true);
this.btnReporte.setEnabled(true);
}
if (permiso.equals("cargaXML"))
{
this.mnuiHoteles.setEnabled(true);
this.mnuiVuelos.setEnabled(true);
this.mnuiTerrestres.setEnabled(true);
this.mnuiViajesMartimos.setEnabled(true);
this.mnuiCargarRestaurante.setEnabled(true);
}
}
public void habilita_forms(){
List
permisos=this.g_usuario.getPerfilesUsuario(usuario.getNick());
Integer ind=0;
while (ind
-
169
169
//System.out.println(permiso.getDescripcion());
ind++;
}
}
lblUsuario.setHorizontalTextPosition(SwingCons
tants.RIGHT);
lblUsuario.setHorizontalAlignment(SwingConsta
nts.RIGHT);
lblUsuario.setForeground(Color.blue);
lblUsuario.setText("Usuario :");
pnlHora = new JPanel();
pnlHora.setLayout(null);
pnlHora.setBounds(new
Rectangle(0, 440, 651, 65));
pnlHora.add(lblHoraHilo, null);
pnlHora.add(lblTiempo, null);
pnlHora.add(lblUsuario, null);
pnlHora.add(lblNombre, null);
}
return pnlHora;
}
/**
* This method initializes tlbMenuPrincipal
*
* @return javax.swing.JToolBar
*/
private JToolBar getTlbMenuPrincipal() {
if (tlbMenuPrincipal == null) {
tlbMenuPrincipal = new JToolBar();
tlbMenuPrincipal.setBounds(new
Rectangle(1, 6, 647, 57));
private JButton getBtnSalir() {
if (btnSalir == null) {
btnSalir = new JButton();
btnSalir.setIcon(new
ImageIcon(getClass().getResource("/Iconos/salir1.png")));
btnSalir.setToolTipText("Salir");
btnSalir.addActionListener(new java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
-
170
170
FrmMenuPrincipal.this.Hilo.finaliza();
usuario.setConectado(false);
g_usuario.setConectado(usuario);
System.exit(0);
}
});
}
return btnSalir;
}
/**
* This method initializes mnuiTipoViaje
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getMnuiTipoViaje() {
if (mnuiTipoViaje == null) {
mnuiTipoViaje = new JMenuItem();
mnuiTipoViaje.setText("Tipo de
Viajes");
mnuiTipoViaje.setEnabled(false);
private JButton getBtnXml() {
if (btnXml == null) {
btnXml = new JButton();
btnXml.setIcon(new
ImageIcon(getClass().getResource("/Iconos/niZe - XML.PNG")));
btnXml.setToolTipText("Cargar
Hoteles");
btnXml.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent e) {
if
(vent_cargarHotel==null)
vent_cargarHotel=new FrmCargarHoteles();
vent_cargarHotel.setVisible(true);
} });
}
return btnXml;
}
-
171
171
vent_Ventas=new FrmVentaPaquete();
vent_Ventas.setVisible(true);
}
});
}
return mnuiVta;
}
}
5. Nuevo Cliente
package presentacion;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import java.awt.Color;
import javax.swing.BorderFactory;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import javax.swing.border.TitledBorder;
import java.awt.Font;
import java.awt.event.KeyEvent;
import javax.swing.JRadioButton;
import java.lang.Object;
import Bean.ClienteBean;
import Bean.UsuarioBean;
import Logic.GestorCliente;
public class FrmNuevoCliente extends JFrame {
-
172
172
private static final long serialVersionUID = 1L;
private FrmMantenimientoCliente
vent_mantCliente;
private GestorCliente g_cliente;
private boolean esEmpresa;
private JPanel jContentPane = null;
private JPanel pnlCliente = null;
private JLabel lblCodigo = null;
private JTextField tbxCodigo = null;
private JLabel lblNombre = null;
private JTextField tbxNombre = null;
private JLabel lblApePaterno = null;
private JTextField tbxApPaterno = null;
private JLabel lblApeMaterno = null;
private JTextField tbxApMaterno = null;
private JLabel lblDNI = null;
private JTextField tbxDni = null;
private JLabel lblDireccion = null;
private JTextField tbxDireccion = null;
private JLabel lblEdad = null;
private JTextField tbxEdad = null;
private JLabel lblSexo = null;
private JComboBox cbxSexo = null;
private JLabel lblTelefono = null;
private JTextField tbxTelefono = null;
private JLabel lblEmail = null;
-
173
173
private JTextField tbxEmail = null;
private JLabel lblRUC = null;
private JTextField tbxRuc = null;
private JRadioButton rbtnDni = null;
private JRadioButton rbtnRuc = null;
private JButton btnRegistrar = null;
private JButton btnCancelar = null;
private Integer tipo;//tipo=0 registrar,tipo=1
modificar // @jve:decl-index=0:
/**
* This is the default constructor
*/
public FrmNuevoCliente() {
super();
g_cliente=new GestorCliente();
initialize();
this.setResizable(false);
this.setResizable(false);
}
public void
setVentana_mantenimiento(FrmMantenimientoCliente vent_mantCliente)
{ this.vent_mantCliente=vent_mantCliente;
}
public void carga_cliente(Integer codigo){
ClienteBean cliente;
cliente=this.g_cliente.getCliente(codigo);
this.carga_datos(cliente);
}
public void setEsEmpresa(boolean esEmpresa){
this.esEmpresa=esEmpresa;
}
public void carga_datos(ClienteBean cliente){
this.tbxCodigo.setText(cliente.getIdcliente().toStr
ing());
-
174
174
if(!esEmpresa)
{this.tbxApPaterno.setText(cliente.getApepaterno
());
this.tbxApMaterno.setText(cliente.getApematern
o());
this.tbxEdad.setText(cliente.getEdad().toString())
;
this.tbxDni.setText(cliente.getNumdocumento());
if
(cliente.getSexo().equals("Masculino"))
this.cbxSexo.setSelectedIndex(0);
else
this.cbxSexo.setSelectedIndex(1);
this.cambia_lblnombre(0);
tbxRuc.setEditable(false);
tbxDni.setEditable(true);
rbtnDni.setSelected(true);
rbtnRuc.setSelected(false);
}
else
{this.cambia_lblnombre(1);
tbxRuc.setEditable(true);
tbxDni.setEditable(false);
rbtnRuc.setSelected(true);
rbtnDni.setSelected(false);
}
this.tbxNombre.setText(cliente.getNombre());
this.tbxDireccion.setText(cliente.getDireccion());
this.tbxEmail.setText(cliente.getEmail());
this.tbxTelefono.setText(cliente.getTelefono());
this.tbxRuc.setText(cliente.getRuc());
}
public void setDatos(){
if (this.tipo==0)
{
this.setTitle("Registrar Cliente");
-
175
175
this.btnRegistrar.setText("Registrar");
this.calcula_codigoMax();
this.rbtnDni.setSelected(true);
this.rbtnRuc.setSelected(false);
this.tbxRuc.setEditable(false);
this.cambia_lblnombre(0);
}
else
{
this.setTitle("Modificar Cliente");
this.btnRegistrar.setText("Modificar");
//this.carga_usuario();
}
}
public void setTipo(Integer tipo){
this.tipo=tipo;
}
public void calcula_codigoMax(){
this.tbxCodigo.setText(g_cliente.getMaxId().toSt
ring());
}
public ClienteBean getObjCliente(){
ClienteBean cliente=new ClienteBean();
String sexo;
cliente.setIdcliente(Integer.parseInt(tbxCodigo.ge
tText()));
cliente.setNombre(this.tbxNombre.getText());
cliente.setNumdocumento(this.tbxDni.getText());
cliente.setApepaterno(this.tbxApPaterno.getText(
));
cliente.setApematerno(this.tbxApMaterno.getText());
if(!esEmpresa)
{
-
176
176
cliente.setEdad(Integer.parseInt(this.tbxEdad.get
Text()));
sexo=(String)
this.cbxSexo.getItemAt(this.cbxSexo.getSelectedIndex());
cliente.setSexo(sexo);
}
cliente.setEmail(this.tbxEmail.getText());
cliente.setDireccion(this.tbxDireccion.getText());
cliente.setRuc(this.tbxRuc.getText());
cliente.setTelefono(this.tbxTelefono.getText());
//estado=(String)this.cb.getItemAt(this.cbxEstado
.getSelectedIndex());
cliente.setEstado("Registrado");
return cliente;
}
public void inserta(){
if (this.datos_validos("Registrar Cliente"))
{boolean exito;
ClienteBean cliente;
cliente=this.getObjCliente();
exito=this.g_cliente.Inserta(cliente);
System.out.println(exito);
if (exito)
{JOptionPane.showMessageDialog(this, "Se
registro correctamete al cliente", "Registrar
Cliente",JOptionPane.INFORMATION_MESSAGE);
this.limpiar();
this.vent_mantCliente.busca_clientes();
this.calcula_codigoMax();
}
else
JOptionPane.showMessageDialog(this, "No se registro correctamete al cliente", "Registrar
Cliente",JOptionPane.ERROR_MESSAGE);
}
}
-
177
177
public boolean datos_validos(String ventana){
boolean correcto=true;
if(!esEmpresa)
{if(this.tbxNombre.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar el nombre.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxApPaterno.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar el apellido paterno.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxApMaterno.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar el apellido materno.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxEdad.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar la edad.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxTelefono.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar el nmero de telfono.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.cbxSexo.getSelectedIndex()==-1)
{JOptionPane.showMessageDialog(this, "Debe
seleccionar el sexo.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxDireccion.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar la direccin.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
-
178
178
if(this.tbxEmail.getText().length()==0)
{JOptionPane.showMessageDialog(this, "Debe
ingresar el correo electrnico.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.tbxEdad.getText().length()!=2)
{JOptionPane.showMessageDialog(this, "La edad
debe ser de 2 dgitos.",ventana,JOptionPane.ERROR_MESSAGE);
return false;
}
}
return correcto;
}
public void modifica(){
if (this.datos_validos("Modificar Cliente"))
{boolean exito;
ClienteBean cliente;
cliente=this.getObjCliente();
exito=this.g_cliente.Modifica(cliente);
if (exito)
{JOptionPane.showMessageDialog(this, "Se
modific correctamete al cliente.", "Modificar
Cliente",JOptionPane.INFORMATION_MESSAGE);
this.vent_mantCliente.busca_clientes();
this.dispose();
}
else
JOptionPane.showMessageDialog(this, "No se
modific correctamete al cliente.", "Modificar
Cliente",JOptionPane.ERROR_MESSAGE);
}
}
-
179
179
OBJETIVOS
Implementar un sistema o aplicacin grfica utilizando Swing.
Presentar los entornos grficos del proyetco final.
-
180
180
JDBC
JDBC fue diseado para mantener sencillas las cosas sencillas. Esto significa que el API JDBC hace muy sencillas las tareas diarias de una base de datos, como una simple sentencia SELECT.
JDBC proporciona a los desarrolladores de base de datos una serie de poderosas y flexibles herramientas que permiten escribir aplicaciones de base de datos con una interface estndar. Los mtodos definidos en JDBC operan independiente de la base de datos. Se usan las mismas tcnicas de programacin para hacer cualquiera de las siguientes tareas si se usa DB2, Oracle, Informix, SQLServer, mySQL, o cualquier otra base de datos:
Abrir o cerrar una conexin Llamar procedimientos Agregar, modificar, o eliminar data usando sentencias SQL DML
OBJETIVOS
Implementar un sistema o aplicacin utilizando conexin a base de datos.
-
181
181
Ejecutar sentencias DDL Manejar errores de base de datos
Como se puede notar, tener una sola interface proporciona muchos beneficios, como trabajar con mltiples bases de datos. JDBC generaliza las funciones de acceso a datos ms comunes. Las clases estn contenidas en los paquetes: java.sql y javax.sql
1.1 Arquitectura de JDBC
El API de JDBC ofrece una serie de interfaces Java que permiten establecer conexiones con bases de datos particulares, ejecutar sentencias SQL y procesar los resultados. Las interfaces ms importantes son las siguientes: java.sql.DriverManager Permite cargar los controladores JDBC especficos para cada DBMS y establecer conexiones con bases de datos. java.sql.Statement Permite ejecutar sentencias SQL dada una conexin ya establecida. Esta interface tiene dos subtipos bastante importantes: java.sql.PreparedStatement para ejecutar sentencias SQL precompiladas y java.sqlCallableStatement para llamar procedimientos almacenados en la base de datos. java.sql.ResultSet Permite acceder al resultado de una consulta SQL hecha a la base de datos. java.sql.ResultSetMetaData Tiene informacin sobre el conjunto de resultados, como el nmero de columnas que tiene la consulta, de filas, etc. La figura siguiente, muestra la interrelacin entre estas interfaces segn el modelo de objetos de la especificacin de JDBC.
-
182
182
1.2 La interface Connection
Representa una conexin con una base de datos. Una aplicacin puede tener ms de una conexin a ms de una base de datos. Una conexin (sesin) con una especfica base de datos, permite ejecutar sentencias SQL y retornar resultados dentro del contexto de la conexin. Una conexin permite proporcionar informacin de la base de datos como, descripcin de las tablas de la base de datos, la gramtica SQL soportada, los procedimientos almacenados, las capacidades de conexin, y ms.
-
183
183
Esta informacin se obtiene con el mtodo getMetaData. La conexin se establece a travs del driver, que se carga en ejecucin mediante el mtodo: Class.forName(String nombredelDriver) Una vez cargado el driver, la conexin a la BD se realiza invocando a alguno de los siguientes mtodos de la clase java.sql.DriverManager : Connnection getConnection(String url, java.util.Properties info) Connnection getConnection(String url, String usr, String pwd) Connnection getConnection(String url) El objeto Connection que devuelve el programa se usa para realizar todas las operaciones sobre la BD. El siguiente cdigo de programa muestra una tpica conexin de base de datos:
A partir de este momento el objeto miConexin ser usado en el resto del programa para realizar todas las operaciones sobre la Base de Datos.
. . .
Connection miConexion;
try {
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //Driver // URL de la Base de Datos (Nombre del ODBC)
miConexion = DriverManager.getConnection(jdbc:odbc:empleadosDB); ........
} catch (ClassNotFounException e1) {
// captura el error: no se encontr el driver } catch (SQLException e2) {
// captura el error: no se pudo conectar a la BD }
public boolean isCellEditable(int row, int col) {
return false;
}
}
-
184
184
Al crear una conexin se debe manejar dos excepciones. Una es para controlar si el Driver no ha sido encontrado y la otra para verificar si se realiz la conexin. Nota: Por defecto un objeto Connection est en modo auto-commit, que significa que automticamente se hace commit a los cambios despus de ejecutar una sentencia. Si el modo auto-commit ha sido deshabilitado, el mtodo commit debe llamarse explcitamente para hacer permanentes los cambios; de otra manera, los cambios no sern guardados en la base de datos.
1.3 La interface Statement
Es el objeto utilizado para ejecutar una sentencia SQL esttica y retornar los resultados que produce. Una vez que se establece una conexin con una base de datos en particular, esa conexin puede ser usada para enviar sentencias sql. Un objeto Statement es creado con el mtodo createStatement del objeto Connection, como se muestra en el fragmento de cdigo siguiente: Connection con = DriverManager.getConnection(url, admin, ); Statement stmt = con.createStatement(); La sentencia SQL que enviaremos a la base de datos es proporcionada como argumento para uno de los mtodos execute de un objeto Statement. Esto se muestra en el siguiente ejemplo, que usa el mtodo executeQuery:
ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Tabla);
La variable rs contiene el resultado de ejecutar la sentencia. Nota: Por defecto, slo un objeto ResultSet puede ser abierto al mismo tiempo por un objeto Statement. Por lo tanto, si la lectura de un objeto ResultSet est intercalada con la lectura de otro, cada uno debera haber sido generado por diferentes objetos Statement. Todos los mtodos de ejecucin de la interface Statement implcitamente cierran el actual objeto ResultSet si existe alguno abierto en el objeto Statement.
-
185
185
1.4 La interface Resultset Un ResultSet es un objeto Java que contiene el resultado de ejecutar una consulta SQL en la base de datos. En otras palabras, contiene las filas que satisfacen las condiciones de la consulta. La interface ResultSet proporciona mtodos para obtener (getBoolean, getLong, y ms) los valores de las varias columnas de la fila actual. Los valores pueden ser obtenidos usando el ndice o el nombre de la columna. En general, usar el ndice de la columna es ms eficiente. Las columnas estn numeradas desde el 1. El mtodo next mueve el cursor del objeto ResultSet a la siguiente fila haciendo la fila actual, y retorna false cuando no hay ms filas. este mtodo se puede utilizar en un bucle while para recorrer el juego de resultados. Inicialmente el cursor est posicionado antes de la primera fila. Un objeto ResultSet por defecto no es actualizable y tiene un cursor que se mueve slo hacia adelante. Por lo que, slo se puede recorrer el ResulSet una vez y slo de la primera a la ltima fila. Es posible crear objetos ResultSet que se pueden mover adelante y atrs (scrollable), y que son actualizables. Por ejemplo:
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(SELECT a, b,c FROM TABLA); En el segmento de cdigo anterior rs es scrollable, no muestra cambios hechos por otros, y es actualizable.
1.5 La interface ResultsetMetaData
Es un objeto que puede ser usado para obtener informacin sobre los tipos y propiedades de las columnas en un objeto ResultSet. El siguiente fragmento de cdigo crea un objeto ResultSet rs, crea el objeto ResultSetMetaData rsmd, y usa rsmd para averiguar cuntas columnas tiene rs y si la primera columna en rs puede ser usada en una clasula WHERE. ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM TABLE2); ResultSetMetaData rsmd = rs.getMetaData();
-
186
186
int numberOfColumns = rsmd.getColumnCount(); boolean b = rsmd.isSearchable(1); El siguiente fragmento de cdigo imprime los nombres de todas las columnas en el objeto ResultSet rs. ResultSetMetaData rsmd = rs.getMetaData(); for ( int i=1; i
-
187
187
1.7 Ejercicio 2
Cree un formulario que permita consultar registros de una base de datos utilizando el driver, el url y la sentencia sql especificados.
1.7 Ejercicio 2 Cree un formulario que permita consultar registros de una base de datos utilizando el driver, el url y la sentencia sql especificados.
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Ejemplo2JDBC extends JFrame implements ActionListener{
private JTable jTable;
private JTextField drvField;
private JTextField urlField;
private JTextField sqlField;
private JButton bEjecutar;
public Ejemplo2JDBC(String s) {
super(s);
JPanel contentPane = new JPanel(new BorderLayout());
jTable = new JTable();
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable.setPreferredScrollableViewportSize(new Dimension(600, 120));
contentPane.add(new JScrollPane(jTable),BorderLayout.CENTER);
JPanel panel = new JPanel(new BorderLayout());
JPanel panelOeste = new JPanel(new GridLayout(3,1));
panelOeste.add(new JLabel(Driver: )); panelOeste.add(new JLabel(URL: )); panelOeste.add(new JLabel(SQL: )); panel.add(panelOeste,BorderLayout.WEST);
JPanel panelCentro = new JPanel(new GridLayout(3,1));
drvField = new JTextField(sun.jdbc.odbc.JdbcOdbcDriver,20); urlField = new JTextField(jdbc:odbc:dsnPubs,20);
-
188
188
panelCentro.add(drvField);
panelCentro.add(urlField);
panelCentro.add(sqlField);
panel.add(panelCentro,BorderLayout.CENTER);
JPanel panelSur = new JPanel(new FlowLayout(FlowLayout.RIGHT));
bEjecutar = new JButton(Ejecutar consulta); bEjecutar.addActionListener(this);
panelSur.add(bEjecutar);
panel.add(panelSur,BorderLayout.SOUTH);
contentPane.add(panel,BorderLayout.NORTH);
contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
setContentPane(contentPane);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent evt){
String drv = drvField.getText();
String url = urlField.getText();
String sql = sqlField.getText();
DefaultTableModel tableModel = new DefaultTableModel();
try{
Class.forName(drv);
Connection cn = DriverManager.getConnection(url);
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery (sql);
ResultSetMetaData rsmd = rs.getMetaData();
for (int i=1; i
-
189
189
2 CONSULTAS DE BASES DE DATOS
2.1 Consultas SQL
El lenguaje estructurado de consultas SQL, mediante su instruccin Select nos permite poder consultar la base de datos y obtener de ella datos segn nuestros requerimientos. El formato de la instruccin Select es: Ser obligatorio el uso de la clusula Select y From, pero las dems son opcionales. Clausulas opcionales Where y Order By WHERE y condicin de bsqueda. Si la condicin de bsqueda es TRUE, la fila se incluye en los resultados de la bsqueda.
SELECT Campos
FROM Tablas
WHERE Condicin de bsqueda
GROUP BY Columna de agrupacin
HAVING Condicin de bsqueda
ORDER BY Especificacin de ordenacin
-
190
190
Test de comparacin(=,,=) Select Nombre from Empleados Where Sueldo >= 2000 Select Nombre from Empleados Where Contrato = 2000 And Sueldo 3000 Select Nombre from Empleados Where (Nombre Like P%) And (Contrato >= 01-Ene-90) And (Edad 2000
-
191
191
Order By Nombre Select Nombre from Empleados Where Sueldo > 2000 Order By Nombre Desc Select Nombre from Empleados Where Sueldo > 2000 Order By Nombre Asc, FechaNacimiento Desc Consultas Sumarias SQL permite sumarizar datos de la base de datos mediante un conjunto de funciones de columna. Una funcin de columna SQL acepta una columna entera de datos como argumentos y produce un nico dato que sumariza la columna. Ejemplo: Cul es la cuota promedio y las ventas promedio de los vendedores? Select AVG(Cuota),AVG(Ventas) From Repventas AVG(Cuota) AVG(Ventas) $300,000 $289,353.20 SQL ofrece 6 funciones de columnas diferentes: SUM() Calcula el total de una columna numrica. AVG() Calcula el valor promedio de una columna
numrica. MIN() Encuentra el valor ms pequeo de
una columna. MAX() Encuentra el mayor valor de una columna. COUNT() Cuenta el nmero de valores efectivos de
una columna. COUNT(*) Cuenta el nmero de filas de una columna. Clculo de total de una columna(SUM) Cul es el rendimiento de cuota promedio de los vendedores?
-
192
192
Select AVG(100*(Ventas/Cuotas)) From Repventas AVG(100*(Ventas/Cuotas)) 102.60 Cules son las cuotas y ventas totales para todos los vendedores? Select SUM(Cuota),SUM(Ventas) From Repventas SUM(Cuota) SUM(Ventas) $2,700,000.00 $2,893,353.20 Cul es el total de los pedidos acepatados por Bill Adams? Select SUM(Importe) From Pedidos,Repventas Where Nombre=Bill Adams AndRep=Num_Empl SUM(Importe) $39,353.00 Clculo del promedio de una columna(AVG) Calcula el precio medio de los productos del fabricante ACI? Select AVG(Precio) From Productos Where ID_Fab = ACI AVG(Precio) $804.00 Cuantos son los empleados asignados a cada oficina? Select Cod_Oficina,Count(*) From tblEmpleados Group By Cod_Oficina Cod_Oficina Count(*) NULL 1 //Empleado sin oficina. 11 5 12 8
-
193
193
13 4 . . Condiciones de bsqueda de grupos(Clusula HAVING) Al igual que la clusula WHERE es utilizada para seleccionar o rechazar filas individuales que participan en una consulta, la clusula HAVING es utilizada para seleccionar o rechazar grupos de filas. El formato de la clusula HAVING es anlogo al de la clusula WHERE. La clusula HAVING especifica una condicin de bsqueda para grupos. Cul es el tamao de pedido promedio para cada vendedor cuyas ventas totalizan ms de $30000? Select Cod_Vendedor,AVG(Ventas) From tblVentas Group By Cod_Vendedor Having SUM(Ventas) > 30000 Cod_Vendedor AVG(Ventas) 105 $8234.00 106 $9234.00 112 $5001.00 . . Por cada oficina con dos o ms personas, calcular la cuota total y las ventas totales para todos los vendedores que trabajan en la oficina. Select Ciudad,SUM(Cuota),SUM(RepVentas.Ventas) From Oficinas, RepVentas Where Oficina=Oficina_Rep Group by Ciudad Having Count(*) >=2 Ciudad SUM(Cuota) SUM(RepVentas.Ventas) Chicago $775,210.00 $735,200.00 Los Angeles $700,000.00 $835,400.00 New York $575,211.00 $692,220.00
1.1 La interface PreparedStatement
Una sentencia preparada (prepared statemen