Codigo de Ejemplos Java Eclipse

download Codigo de Ejemplos Java Eclipse

of 91

Transcript of Codigo de Ejemplos Java Eclipse

http://hdcm.sytes.net/documentos/programacion/java/temas/java_ejemplos.html

ejemplos de java en eclipse

Ejemplos JavaAutor: Fernando Rafael FilipuzziE-mail: [email protected]

Temas: Introduccin

Interfaces con Swing

Ejemplo1: Hola mundo

Ejemplo2: Hola mundo

Ejemplo3: ABM

Ejemplo4: ABM

Ejemplo5: Eventos

DAO y Paginado

JDBC

Hibernate

JPA

Enlaces

1. IntroduccinAqu voy a ir agregando ejemplos java. Luego har una descripcin de cada uno.2. Interfaces con Swing1. Ejemplo 1: Hola Mundo Ficheros fuentes:

App.java

Descargar proyecto: EjemploSwing1.tar.gz

package ar.com.hdcm.ejemploswing1.gui.app;/* * autor: * fernando rafael filipuzzi * * e-mail: * [email protected] * * sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;

public class App extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;private JTextField jtfInput = new JTextField(15);private JLabel jlOutput = new JLabel();private JButton jbMostrar = new JButton("Mostrar");private JButton jbCerrar = new JButton("Cerrar");public App(){this.getContentPane().setLayout(new BorderLayout());this.setTitle("Ejemplo Swing 1");/*formulario*/JPanel jpFormulario = new JPanel();this.add(jpFormulario,BorderLayout.CENTER);jpFormulario.setLayout(new GridBagLayout());jpFormulario.add(new JLabel("Valor: ",SwingConstants.RIGHT),new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpFormulario.add(jtfInput,new GridBagConstraints(1,0,1,1,100.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));jpFormulario.add(jlOutput,new GridBagConstraints(0,1,2,1,100.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));/*barra de botones*/JPanel jpBarraBotones = new JPanel();this.add(jpBarraBotones,BorderLayout.SOUTH);jpBarraBotones.setLayout(new FlowLayout());jpBarraBotones.add(jbMostrar);jbMostrar.addActionListener(this);jpBarraBotones.add(jbCerrar);jbCerrar.addActionListener(this);this.pack();}

@Overridepublic void actionPerformed(ActionEvent e) {if(e!=null && jbCerrar.equals(e.getSource())){System.exit(0);}else if(e!=null && jbMostrar.equals(e.getSource())){jlOutput.setText(jtfInput.getText());}}

public static void main(String [] args){App app=new App();app.setVisible(true);}}

2. Ejemplo 2: Hola Mundo Ficheros fuentes:

App.java

Descargar proyecto: EjemploSwing2.tar.gzpackage ar.com.hdcm.ejemploswing2.gui.app;/* * autor: * fernando rafael filipuzzi * * e-mail: * [email protected] * * sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextField;import javax.swing.SwingConstants;

public class App extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;private JTextField jtfInput = new JTextField(15);private JLabel jlOutput = new JLabel(" ");private JButton jbMostrar = new JButton("Mostrar");private JButton jbCerrar = new JButton("Cerrar");public App(){this.getContentPane().setLayout(new BorderLayout());this.setTitle("Ejemplo Swing 2");/*formulario*/JPanel jpFormulario = new JPanel();this.add(jpFormulario,BorderLayout.CENTER);jpFormulario.setLayout(new GridBagLayout());jpFormulario.add(new JLabel("Valor: ",SwingConstants.RIGHT),new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpFormulario.add(jtfInput,new GridBagConstraints(1,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));JPanel jpResultado = new JPanel();jpResultado.setLayout(new BorderLayout());jpResultado.add(jlOutput, BorderLayout.CENTER);jpFormulario.add(new JScrollPane(jpResultado,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),new GridBagConstraints(0,1,2,2,100.0,100.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));//http://download.oracle.com/javase/1.4.2/docs/api/java/awt/GridBagConstraints.html#anchor//http://download.oracle.com/javase/1.4.2/docs/api/java/awt/GridBagConstraints.html/*barra de botones*/JPanel jpBarraBotones = new JPanel();this.add(jpBarraBotones,BorderLayout.SOUTH);jpBarraBotones.setLayout(new FlowLayout());jpBarraBotones.add(jbMostrar);jbMostrar.addActionListener(this);jpBarraBotones.add(jbCerrar);jbCerrar.addActionListener(this);this.pack();this.setResizable(false);}

@Overridepublic void actionPerformed(ActionEvent e) {if(e!=null && jbCerrar.equals(e.getSource())){System.exit(0);}else if(e!=null && jbMostrar.equals(e.getSource())){jlOutput.setText(jtfInput.getText());}}

public static void main(String [] args){App app1=new App();app1.setVisible(true);}}

*****************************************************************************3. Ejemplo 3: ABM Ficheros fuentes:

App.java Producto.java ProductosTableModel.java

Tarballs del proyecto en Eclipse: Proyecto Eclipse: EjemploSwing3.tar.gz

package ar.com.hdcm.producto.gui.app;/* * autor: * fernando rafael filipuzzi * * e-mail: * [email protected] * * sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;

import ar.com.hdcm.producto.gui.tablemodel.ProductosTableModel;import ar.com.hdcm.producto.modelo.Producto;

public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener{private static final long serialVersionUID = 1L;private JTextField jtfProductoCodigo = new JTextField(15);private JTextField jtfProductoNombre= new JTextField(15);private JCheckBox jcbProductoDisponible = new JCheckBox("Disponible");

private JButton jbNuevo = new JButton("Nuevo");private JButton jbAgregar = new JButton("Agregar");private JButton jbModificar = new JButton("Modificar");private JButton jbEliminar = new JButton("Eliminar");private JScrollPane jspTabla = new JScrollPane();private JTable jtTabla=new JTable();private Producto producto=new Producto();private ProductosTableModel tmProductos=new ProductosTableModel();private JButton jbCerrar = new JButton("Cerrar");public App(){this.getContentPane().setLayout(new BorderLayout());this.setTitle("Ejemplo 3: ABM");/* ------ ||(JPanel)|[JLabel] [TextInput] (Codigo) ||Formulario| [JLabel] [TextInput] (Nombre) ||(GridBagLayout)| |(JPanel)| (posicion0,0)|-------------------------------------------------------- |Adm|| jpPanel| (barra de botones) |(GridBagLayout)|| (FlowLayout) | [Nuevo] [Agregar] [Modificar] [Eliminar] borderLayout |(center)|(jPanel)|(norte)|------------------------------------ ||Detalle||| [Codigo] [Nombre] ||BorderLayout| || | |(posicion0,1)|jspScrollPane| jtTabla| |||(BorderLayout)|| |||(center)|| |||(viewporview)|| |jpPanel |------------------------------------------------------------------------ |(FlowLayout)| | (sur)| [Cerrar] |-------------------|---------------------- ------------------------------------------------- **//*adm*/JPanel jpAdm=new JPanel();jpAdm.setLayout(new GridBagLayout());this.add(jpAdm,BorderLayout.CENTER);/*formulario*/JPanel jpAdmFormulario = new JPanel();jpAdmFormulario.setBorder(BorderFactory.createTitledBorder("Datos de Producto"));jpAdmFormulario.setLayout(new GridBagLayout());jpAdm.add(jpAdmFormulario,new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(new JLabel("Cdigo: ",SwingConstants.RIGHT),new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jcbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(new JLabel("Nombre: ",SwingConstants.RIGHT),new GridBagConstraints(0,1,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));/*detalle*/JPanel jpAdmDetalle=new JPanel();jpAdmDetalle.setLayout(new BorderLayout());jpAdm.add(jpAdmDetalle,new GridBagConstraints(0,1,1,2,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));/*detalle/barrabotones*/JPanel jpAdmDetalleBarraBotones = new JPanel();jpAdmDetalleBarraBotones.setLayout(new FlowLayout());jpAdmDetalle.add(jpAdmDetalleBarraBotones,BorderLayout.NORTH);jpAdmDetalleBarraBotones.add(jbNuevo);jbNuevo.addActionListener(this);jpAdmDetalleBarraBotones.add(jbAgregar);jbAgregar.addActionListener(this);jpAdmDetalleBarraBotones.add(jbModificar);jbModificar.addActionListener(this);jpAdmDetalleBarraBotones.add(jbEliminar);jbEliminar.addActionListener(this);/*detalle/tabla*/jpAdmDetalle.add(jspTabla);jtTabla.setModel(tmProductos);jtTabla.setPreferredScrollableViewportSize(new Dimension(500, 85));jtTabla.setFillsViewportHeight(true);jtTabla.setAutoCreateRowSorter(true); //Sorting and Filtering/*alternativaTableRowSorter sorter = new TableRowSorter(table.getModel());table.setRowSorter(sorter);redefinirComparator comparator = new Comparator() { public int compare(String s1, String s2) { String[] strings1 = s1.split("\\s"); String[] strings2 = s2.split("\\s"); return strings1[strings1.length - 1].compareTo(strings2[strings2.length - 1]); }};*/

jtTabla.getSelectionModel().addListSelectionListener(this);jspTabla.setViewportView(jtTabla);/*barra de botones*/JPanel jpBarraBotones = new JPanel();this.add(jpBarraBotones,BorderLayout.SOUTH);jpBarraBotones.setLayout(new FlowLayout());jpBarraBotones.add(jbCerrar);jbCerrar.addActionListener(this);nuevoProducto();this.pack();}

public static void main(String [] args){App app=new App();app.setVisible(true);}public void seleccionarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());if(producto!=null){jtfProductoCodigo.setText(producto.getCodigo().toString());jtfProductoNombre.setText(producto.getNombre());}if(this.producto!=null){this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(false);this.jbModificar.setEnabled(true);this.jbEliminar.setEnabled(true);}else{nuevoProducto();}}public void nuevoProducto(){this.producto=new Producto();jtfProductoCodigo.setText("");jtfProductoNombre.setText("");this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(true);this.jbModificar.setEnabled(false);this.jbEliminar.setEnabled(false);}public void addProducto(){this.jspTabla.remove(jtTabla);producto = new Producto();Integer codigo=null;if(jtfProductoCodigo.getText()!=null && !jtfProductoCodigo.getText().equals("")&& !jtfProductoCodigo.getText().contains(" ")){codigo=Integer.parseInt(jtfProductoCodigo.getText());}producto.setCodigo(codigo);producto.setNombre(jtfProductoNombre.getText());if(producto.getCodigo()!=null){tmProductos.productos.add(producto);}producto.setDisponible(jcbProductoDisponible.isSelected());this.jspTabla.setViewportView(jtTabla);/*limpia el formulario*/this.producto=new Producto();jtfProductoCodigo.setText("");jtfProductoNombre.setText("");this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(true);this.jbModificar.setEnabled(false);this.jbEliminar.setEnabled(false);}public void modificarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());if(this.producto!=null){Integer codigo=null;if(jtfProductoCodigo.getText()!=null){codigo=Integer.parseInt(jtfProductoCodigo.getText());}producto.setCodigo(codigo);producto.setNombre(jtfProductoNombre.getText());producto.setDisponible(jcbProductoDisponible.isSelected());}this.jtTabla.repaint();}public void eliminarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());tmProductos.productos.remove(producto);this.jtTabla.repaint();}

@Overridepublic void actionPerformed(ActionEvent e) {if(e!=null && jbCerrar.equals(e.getSource())){System.exit(0);}else if(e!=null && jbNuevo.equals(e.getSource())){nuevoProducto();}else if(e!=null && jbAgregar.equals(e.getSource())){addProducto();nuevoProducto();}else if(e!=null && jbModificar.equals(e.getSource())){modificarProducto();}else if(e!=null && jbEliminar.equals(e.getSource())){eliminarProducto();nuevoProducto();}}

@Overridepublic void valueChanged(ListSelectionEvent e) {int viewRow = jtTabla.getSelectedRow(); if (viewRow < 0) { System.out.println(""); } else { int modelRow = jtTabla.convertRowIndexToModel(viewRow); System.out.println(String.format("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); }}

@Overridepublic void tableChanged(TableModelEvent e) {int row = e.getFirstRow();int column = e.getColumn();ProductosTableModel model = (ProductosTableModel) e.getSource();String columnName = model.getColumnName(column);Producto data = (Producto)model.getValueAt(row, column);System.out.println(data.getId()+"-"+data.getCodigo()+"-"+data.getNombre() + " - "+ columnName);}}

**********************************************************************package ar.com.hdcm.producto.modelo;/* * autor: * fernando rafael filipuzzi * * e-mail: * [email protected] * * sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */public class Producto {private Integer id;private Integer codigo;private String nombre;private Boolean disponible=false;public Producto(){}

public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}

public Integer getCodigo() {return codigo;}public void setCodigo(Integer codigo) {this.codigo = codigo;}

public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public Boolean getDisponible() {return disponible;}public void setDisponible(Boolean disponible) {this.disponible = disponible;}}****************************************************************package ar.com.hdcm.producto.gui.tablemodel;/* * autor: * fernando rafael filipuzzi * * e-mail: * [email protected] * * sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */import java.util.ArrayList;import java.util.List;

import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;

import ar.com.hdcm.producto.modelo.Producto;

public class ProductosTableModel implements TableModel{

public List productos = new ArrayList();public List nombreColumnas = new ArrayList();public List tableModelListeners = new ArrayList();public ProductosTableModel(){nombreColumnas.add("Cdigo");nombreColumnas.add("Nombre");nombreColumnas.add("Disponible");}@Overridepublic Class getColumnClass(int arg0) {return getValueAt(0, arg0).getClass();}

@Overridepublic int getColumnCount() {if(nombreColumnas!=null){return nombreColumnas.size();}return 0;}

@Overridepublic String getColumnName(int arg0) {if(nombreColumnas!=null && arg0>=0 && nombreColumnas.size()>arg0){return nombreColumnas.get(arg0);}return null;}

@Overridepublic int getRowCount() {if(productos!=null){return productos.size();}return 0;}

@Overridepublic Object getValueAt(int arg0, int arg1) {if(productos!=null && arg0>=0 && arg1>=0 && productos.size()>arg0){Producto producto=productos.get(arg0);switch(arg1){case 0: return producto.getCodigo();case 1: return producto.getNombre();case 2: return producto.getDisponible();}}return null;}@Overridepublic void setValueAt(Object arg0, int arg1, int arg2) {if(productos!=null && arg1>=0 && arg2>=0 && productos.size()>arg1){Producto producto=productos.get(arg1);switch(arg2){case 0:Integer codigoNuevo=null;if(arg0!=null){codigoNuevo=(Integer)arg0;}producto.setCodigo(codigoNuevo);break;case 1: String nombreNuevo=null;if(arg0!=null){nombreNuevo=(String)arg0;}producto.setNombre(nombreNuevo);break;case 2: Boolean disponible=false;if(arg0!=null){disponible=(Boolean)arg0;}producto.setDisponible(disponible);break;}}}

@Overridepublic boolean isCellEditable(int arg0, int arg1) {return false;}

@Overridepublic void removeTableModelListener(TableModelListener arg0) {tableModelListeners.add(arg0);}@Overridepublic void addTableModelListener(TableModelListener arg0) {tableModelListeners.remove(arg0);}}********************************************************************************1. Ejemplo 4: ABM

Ficheros fuentes:

App.java BarraBotonesActionListener.java Producto.java ProductosTableModel.java

Tarballs del proyecto en Eclipse: EjemploSwing4.tar.gz

package ar.com.hdcm.producto.app.gui.app;/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;

import ar.com.hdcm.producto.app.gui.listener.BarraBotonesActionListener;import ar.com.hdcm.producto.app.gui.tablemodel.ProductosTableModel;import ar.com.hdcm.producto.app.modelo.Producto;

public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener{private static final long serialVersionUID = 1L;private JTextField jtfProductoCodigo = new JTextField(15);private JTextField jtfProductoNombre= new JTextField(15);private JCheckBox jcbProductoDisponible = new JCheckBox("Disponible");

private JButton jbNuevo = new JButton("Nuevo");private JButton jbAgregar = new JButton("Agregar");private JButton jbModificar = new JButton("Modificar");private JButton jbEliminar = new JButton("Eliminar");private JScrollPane jspTabla = new JScrollPane();private JTable jtTabla=new JTable();private Producto producto=new Producto();private ProductosTableModel tmProductos=new ProductosTableModel();private JButton jbCerrar = new JButton("Cerrar");public App(){this.getContentPane().setLayout(new BorderLayout());this.setTitle("Ejemplo 4 - ABM");/* ------ ||(JPanel)|[JLabel] [TextInput] (Codigo) ||Formulario| [JLabel] [TextInput] (Nombre) ||(GridBagLayout)| |(JPanel)| (posicion0,0)|-------------------------------------------------------- |Adm|| jpPanel| (barra de botones) |(GridBagLayout)|| (FlowLayout) | [Nuevo] [Agregar] [Modificar] [Eliminar] borderLayout |(center)|(jPanel)|(norte)|------------------------------------ ||Detalle||| [Codigo] [Nombre] ||BorderLayout| || | |(posicion0,1)|jspScrollPane| jtTabla| |||(BorderLayout)|| |||(center)|| |||(viewporview)|| |jpPanel |------------------------------------------------------------------------ |(FlowLayout)| | (sur)| [Cerrar] |-------------------|---------------------- ------------------------------------------------- **//*adm*/JPanel jpAdm=new JPanel();jpAdm.setLayout(new GridBagLayout());this.add(jpAdm,BorderLayout.CENTER);/*formulario*/JPanel jpAdmFormulario = new JPanel();jpAdmFormulario.setBorder(BorderFactory.createTitledBorder("Datos de Producto"));jpAdmFormulario.setLayout(new GridBagLayout());jpAdm.add(jpAdmFormulario,new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(new JLabel("Cdigo: ",SwingConstants.RIGHT),new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jcbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(new JLabel("Nombre: ",SwingConstants.RIGHT),new GridBagConstraints(0,1,1,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));jpAdmFormulario.add(jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(5,5,10,5),1,1));/*detalle*/JPanel jpAdmDetalle=new JPanel();jpAdmDetalle.setLayout(new BorderLayout());jpAdm.add(jpAdmDetalle,new GridBagConstraints(0,1,1,2,0.0,0.0, GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(5,5,10,5),1,1));/*detalle/barrabotones*/JPanel jpAdmDetalleBarraBotones = new JPanel();jpAdmDetalleBarraBotones.setLayout(new FlowLayout());jpAdmDetalle.add(jpAdmDetalleBarraBotones,BorderLayout.NORTH);jpAdmDetalleBarraBotones.add(jbNuevo);jbNuevo.addActionListener(this);jpAdmDetalleBarraBotones.add(jbAgregar);jbAgregar.addActionListener(this);jpAdmDetalleBarraBotones.add(jbModificar);jbModificar.addActionListener(this);jpAdmDetalleBarraBotones.add(jbEliminar);jbEliminar.addActionListener(this);/*detalle/tabla*/jpAdmDetalle.add(jspTabla);jtTabla.setModel(tmProductos);jtTabla.setAutoCreateRowSorter(true); //Sorting and Filtering/*alternativa al "sorting and filtering"TableRowSorter sorter = new TableRowSorter(table.getModel());table.setRowSorter(sorter);redefinirComparator comparator = new Comparator() { public int compare(String s1, String s2) { String[] strings1 = s1.split("\\s"); String[] strings2 = s2.split("\\s"); return strings1[strings1.length - 1].compareTo(strings2[strings2.length - 1]); } };*/jtTabla.getSelectionModel().addListSelectionListener(this);jspTabla.setViewportView(jtTabla);jtTabla.setPreferredScrollableViewportSize(new Dimension(500, 85));jtTabla.setFillsViewportHeight(true);/*barra de botones*/JPanel jpBarraBotones = new JPanel();this.add(jpBarraBotones,BorderLayout.SOUTH);jpBarraBotones.setLayout(new FlowLayout());jpBarraBotones.add(jbCerrar);jbCerrar.setActionCommand("CERRAR");jbCerrar.addActionListener(new BarraBotonesActionListener());nuevoProducto();this.pack();}

public static void main(String [] args){App app=new App();app.setVisible(true);}public void seleccionarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());if(producto!=null){jtfProductoCodigo.setText(producto.getCodigo().toString());jtfProductoNombre.setText(producto.getNombre());}if(this.producto!=null){this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(false);this.jbModificar.setEnabled(true);this.jbEliminar.setEnabled(true);}else{nuevoProducto();}}public void nuevoProducto(){this.producto=new Producto();jtfProductoCodigo.setText("");jtfProductoNombre.setText("");this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(true);this.jbModificar.setEnabled(false);this.jbEliminar.setEnabled(false);}public void addProducto(){this.jspTabla.remove(jtTabla);producto = new Producto();Integer codigo=null;if(jtfProductoCodigo.getText()!=null && !jtfProductoCodigo.getText().equals("")&& !jtfProductoCodigo.getText().contains(" ")){codigo=Integer.parseInt(jtfProductoCodigo.getText());}producto.setCodigo(codigo);producto.setNombre(jtfProductoNombre.getText());if(producto.getCodigo()!=null){tmProductos.productos.add(producto);}producto.setDisponible(jcbProductoDisponible.isSelected());this.jspTabla.setViewportView(jtTabla);/*limpia el formulario*/this.producto=new Producto();jtfProductoCodigo.setText("");jtfProductoNombre.setText("");this.jbNuevo.setEnabled(true);this.jbAgregar.setEnabled(true);this.jbModificar.setEnabled(false);this.jbEliminar.setEnabled(false);}public void modificarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());if(this.producto!=null){Integer codigo=null;if(jtfProductoCodigo.getText()!=null){codigo=Integer.parseInt(jtfProductoCodigo.getText());}producto.setCodigo(codigo);producto.setNombre(jtfProductoNombre.getText());producto.setDisponible(jcbProductoDisponible.isSelected());}this.jtTabla.repaint();}public void eliminarProducto(){this.producto=tmProductos.productos.get(jtTabla.getSelectedRow());tmProductos.productos.remove(producto);this.jtTabla.repaint();}

@Overridepublic void actionPerformed(ActionEvent e) {if(e!=null && jbNuevo.equals(e.getSource())){nuevoProducto();}else if(e!=null && jbAgregar.equals(e.getSource())){addProducto();nuevoProducto();}else if(e!=null && jbModificar.equals(e.getSource())){modificarProducto();}else if(e!=null && jbEliminar.equals(e.getSource())){eliminarProducto();nuevoProducto();}}

@Overridepublic void valueChanged(ListSelectionEvent e) {int viewRow = jtTabla.getSelectedRow(); if (viewRow < 0) { System.out.println(""); } else { int modelRow = jtTabla.convertRowIndexToModel(viewRow); System.out.println(String.format("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); }//http://download.oracle.com/javase/tutorial/uiswing/components/table.html#editor //http://inforux.wordpress.com/category/jcheckbox/ //http://download.oracle.com/javase/tutorial/uiswing/components/border.html //http://inforux.wordpress.com/2008/07/21/aprediendo-con-jcheckbox-y-jradiobutton/#more-309}

@Overridepublic void tableChanged(TableModelEvent e) {int row = e.getFirstRow();int column = e.getColumn();ProductosTableModel model = (ProductosTableModel) e.getSource();String columnName = model.getColumnName(column);Producto data = (Producto)model.getValueAt(row, column);System.out.println(data.getId()+"-"+data.getCodigo()+"-"+data.getNombre()+"-"+columnName);//http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html}}******************************************************************package ar.com.hdcm.producto.app.gui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

public class BarraBotonesActionListener implements ActionListener {

@Overridepublic void actionPerformed(ActionEvent e) {if(e!=null && e.getActionCommand()!=null && e.getActionCommand().equals("CERRAR")){System.exit(0);}

}

}**************************************************package ar.com.hdcm.producto.app.modelo;/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

public class Producto {private Integer id;private Integer codigo;private String nombre;private Boolean disponible=false;public Producto(){}

public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}

public Integer getCodigo() {return codigo;}public void setCodigo(Integer codigo) {this.codigo = codigo;}

public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public Boolean getDisponible() {return disponible;}public void setDisponible(Boolean disponible) {this.disponible = disponible;}}

*******************************************package ar.com.hdcm.producto.app.gui.tablemodel;/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

import java.util.ArrayList;import java.util.List;

import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;

import ar.com.hdcm.producto.app.modelo.Producto;

public class ProductosTableModel implements TableModel{

public List productos = new ArrayList();public List nombreColumnas = new ArrayList();public List tableModelListeners = new ArrayList();public ProductosTableModel(){nombreColumnas.add("Cdigo");nombreColumnas.add("Nombre");nombreColumnas.add("Disponible");}@Overridepublic Class getColumnClass(int arg0) {return getValueAt(0, arg0).getClass();}

@Overridepublic int getColumnCount() {if(nombreColumnas!=null){return nombreColumnas.size();}return 0;}

@Overridepublic String getColumnName(int arg0) {if(nombreColumnas!=null && arg0>=0 && nombreColumnas.size()>arg0){return nombreColumnas.get(arg0);}return null;}

@Overridepublic int getRowCount() {if(productos!=null){return productos.size();}return 0;}

@Overridepublic Object getValueAt(int arg0, int arg1) {if(productos!=null && arg0>=0 && arg1>=0 && productos.size()>arg0){Producto producto=productos.get(arg0);switch(arg1){case 0: return producto.getCodigo();case 1: return producto.getNombre();case 2: return producto.getDisponible();}}return null;}@Overridepublic void setValueAt(Object arg0, int arg1, int arg2) {if(productos!=null && arg1>=0 && arg2>=0 && productos.size()>arg1){Producto producto=productos.get(arg1);switch(arg2){case 0:Integer codigoNuevo=null;if(arg0!=null){codigoNuevo=(Integer)arg0;}producto.setCodigo(codigoNuevo);break;case 1: String nombreNuevo=null;if(arg0!=null){nombreNuevo=(String)arg0;}producto.setNombre(nombreNuevo);break;case 2: Boolean disponible=false;if(arg0!=null){disponible=(Boolean)arg0;}producto.setDisponible(disponible);break;}}}

@Overridepublic boolean isCellEditable(int arg0, int arg1) {return false;}

@Overridepublic void removeTableModelListener(TableModelListener arg0) {tableModelListeners.add(arg0);}@Overridepublic void addTableModelListener(TableModelListener arg0) {tableModelListeners.remove(arg0);}}

**********************************************************************1. 1. Ejemplo 5: Eventos Ficheros fuentes:

App.java CustomEvent.java CustomEventListener.java CustomPanel.java

2.

Tarballs del proyecto en Eclipse: EjemploSwing5.tar.gz App.java/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

package ar.com.hdcm.ejemploswing5.gui.app;

import java.awt.BorderLayout;

import javax.swing.JFrame;import javax.swing.JLabel;

import ar.com.hdcm.swing.CustomPanel;import ar.com.hdcm.swing.event.CustomEvent;import ar.com.hdcm.swing.listener.CustomEventListener;

public class App extends JFrame implements CustomEventListener{private static final long serialVersionUID = 1L;private CustomPanel cp = new CustomPanel();private JLabel jl = new JLabel(" ");

public App(){super("Ejemplo 5 - Custom Event");this.getContentPane().setLayout(new BorderLayout());this.add(cp,BorderLayout.CENTER);cp.addCustomEventListener(this);this.add(jl,BorderLayout.SOUTH);pack();}public static void main(String [] args){App app= new App();app.setVisible(true);}

@Overridepublic void customEventOcurrido(CustomEvent customEvent) {jl.setText("Hola Mundo");}}CustomEvent.java/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

package ar.com.hdcm.swing.event;

import java.util.EventObject;

public class CustomEvent extends EventObject {private static final long serialVersionUID = 1L;public CustomEvent(Object source) {super(source);}

}

CustomEventListener.java /* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

package ar.com.hdcm.swing.listener;

import java.util.EventListener;

import ar.com.hdcm.swing.event.CustomEvent;

public interface CustomEventListener extends EventListener {public void customEventOcurrido(CustomEvent customEvent);}

CustomPanel.java/* * @autor: * fernando rafael filipuzzi * * @e-mail: * [email protected] * * @sitio web: * http://hdcm.sytes.net * http://hdcm.com.ar * */

package ar.com.hdcm.swing;

import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

import javax.swing.JButton;import javax.swing.JPanel;

import ar.com.hdcm.swing.event.CustomEvent;import ar.com.hdcm.swing.listener.CustomEventListener;

public class CustomPanel extends JPanel {private static final long serialVersionUID = 1L;// Create the listener list protected javax.swing.event.EventListenerList listenerList =new javax.swing.event.EventListenerList(); public CustomPanel(){this.setLayout(new FlowLayout());JButton jbAceptar = new JButton("Aceptar");jbAceptar.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent event) {CustomEvent customEvent= new CustomEvent(CustomPanel.this);CustomPanel.this.fireCustomEvent(customEvent);}});this.add(jbAceptar);} // This methods allows classes to register for MyEvents public void addCustomEventListener(CustomEventListener listener) { listenerList.add(CustomEventListener.class, listener); }

// This methods allows classes to unregister for MyEvents public void removeCustomEventListener(CustomEventListener listener) { listenerList.remove(CustomEventListener.class, listener); }

// This private class is used to fire MyEvents void fireCustomEvent(CustomEvent customEvent) { Object[] listeners = listenerList.getListenerList(); // Each listener occupies two elements - the first is the listener class // and the second is the listener instance for (int i=0; i