Creo que te refieres al patrón MVC. Modelado - Vista - Control.
Esto es un esquema de 3 capas. La clase o clases controladoras son las que van a recibir la información que le transmita la interfaz gráfica, y esa información se la pasa al Modelo (que es otra clase), para que procese esa información. Una vez obtenida, el controlador actualiza esa información en la interfaz gráfica.
Creamos nuestra POJO:
Código Java:
Ver originalpublic class Usuario {
private String fechaNacimiento
;
public void setNombre
(String nombre
) {
this.nombre = nombre;
}
{
return this.nombre;
}
// asi con todos las propiedades
} // fin clase
Creamos el Modelo:
Código Java:
Ver originalpublic class RegistrarUsuario {
public boolean registrarUsuario(Usuario usuario)
{
// Aqui obtienes los datos del usuario por medio de sus getters
// luego usas StringDateFormat para formatear fechaNacimiento
// a tipo Date que reconosca la BD. Luego haces la conexión a la
// BD e isertas los valores en tu tabla.
java.
util.
Date fecha
= null; // crea objetos tipo util.Date y sql.Date java.
sql.
Date fecha2
= null; try {
fecha = ft.parse(usuario.getFechaNacimiento()); // convierte el string en util.Date
fecha2
= new java.
sql.
Date(fecha.
getTime()); // convierte el util.Date en sql.Date }
JOptionPane.
showMessageDialog(null,
"Debes ingresar una fecha correcta."); }
try {
conexion
= (Connection) Conexion.
getConnection(); // abrimos la conexion // crea una sentencia previa para mandarla a una declaracion preparada (PreparedStatement)
String sentencia
= "insert into empleado values(?,?,?,?,?,?)"; PreparedStatement prepararConsulta
= conexion.
prepareStatement(sentencia
); // prepara la declaracion con la sentencia previa prepararConsulta.setInt(1, 0); // pasa los valores que se van a insertar en la tabla
prepararConsulta.setString(2,usuario.getPrimerApellido());
prepararConsulta.setString(3,usuario.getSegundoApellido());
prepararConsulta.setString(4,usuario.getNombre());
prepararConsulta.setString(5,usuario.getTipoUsuario());
prepararConsulta.setDate(6,fecha2);
prepararConsulta.executeUpdate(); // ejecuta la declaracion
prepararConsulta.close(); // cierra la conexion de la declaracioN
JOptionPane.
showMessageDialog(null,
"Datos ingresados satisfactoriamente."); }
JOptionPane.
showMessageDialog(null,e.
getMessage().
toString()); }
JOptionPane.
showMessageDialog(null,
"No se ha podido establecer la conexion."); }
finally{
conexion.close();
}
}
} // fin clase
Creamos la clase Conexion para que le sirva de apoyo al Modelo:
Código Java:
Ver originalpackage modelo;
public class Conexion {
Connection conexion
; // crea un objeto de conexion try
{
// registra el driver, el servidor, la tabla y el user y contrasenia
Class.forName("com.mysql.jdbc.Driver");
String servidor
= "jdbc:mysql://localhost/empleados"; conexion
= DriverManager.
getConnection(servidor,usuarioDB,passwordDB
); // conexion obtiene todos los datos }
{
conexion=null;
}
return conexion;
}
}
Creamos el Controlador:
Código Java:
Ver original
private GUI gui;
private RegistrarUsuario registrar;
public Controller(GUI gui, InsertarUsuario registrar)
{
this.gui = gui;
this.registrar = registrar;
}
@Override
{
if (e.getSource() == btnRegistrar)
{
Usuario usuario = new Usuario();
usuario.setNombre(txtNombre.getText());
usuario.setApellidos(txtApellidos.setText());
String tipoUsuario
= cboTipoUsario.
getSelectedItem().
toString(); usuario.setTipoUsuario(tipoUsuario);
usuario.setFechaNacimiento(txtFechaNacimiento.getText());
insertar.registrarUsuario(usuario);
}
else if(e.getSource() == btnNuevo)
{
gui.limpiarCampos();
}
else if(e.getSource() == btnSalir)
{
}
}
} // fin actionPerformed
} // fin clase
Código Java:
Ver originalpackage vista;
public class Formulario implements apoyo{
// aqui van todos los controles cono publicos
public String[] tipos
= {"Administrador",
"Vendedor",
"Consultor"};
public Formulario()
{
// un solo panel contendra los paneles de los
// campos de texto y los botones. El panel de
// los campos estaran en el centro y el panel
// de los botons estara en el sur
panelTitle.
setPreferredSize(new Dimension(500,
400)); // tamanio del panel panelTitle.
setBorder(BorderFactory.
createTitledBorder("Registro de Usuarios")); // title border marco.add(getTitle()); // el marco agrega el titulo
panelTitle.add(getFields()); // agrega el panel de los fields
panelTitle.add(getButtonsPanel()); // agrega el panel de los botones
marco.add(panelTitle); // agrega el panel al marco
marco.pack();
}
private void config()
{
marco.setVisible(true);
marco.setResizable(false);
marco.
setDefaultCloseOperation(JFrame.
DISPOSE_ON_CLOSE); marco.setSize(550,550);
}
// panel que genera el titulo
lbl.
setForeground(Color.
BLUE); panel.add(lbl);
return panel;
}
// panel que contiene los fields (labels y txtfields)
{
lblNombre
= new JLabel("NOMBRE:"); lblNombre.
setFont(new Font("Segoei",
0,
11)); lblPrimerApellido
= new JLabel("PRIMER APELLIDO:"); lblPrimerApellido.
setFont(new Font("",
0,
11)); lblSegundoApellido
= new JLabel("SEGUNDO APELLIDO:"); lblSegundoApellido.
setFont(new Font("",
0,
11)); lblTipoUsuario
= new JLabel("TIPO DE USUARIO:"); lblTipoUsuario.
setFont(new Font("",
0,
11)); lblFechaNacimiento
= new JLabel("FECHA DE NACIMIENTO:"); lblFechaNacimiento.
setFont(new Font("",
0,
11));
txtNombre.
setPreferredSize(new Dimension(100,
25));
panelfields.add(lblNombre);
panelfields.add(txtNombre);
panelfields.add(lblPrimerApellido);
panelfields.add(txtPrimerApellido);
panelfields.add(lblSegundoApellido);
panelfields.add(txtSegundoApellido);
panelfields.add(lblTipoUsuario);
panelfields.add(cboTipoUsuario);
panelfields.add(lblFechaNacimiento);
panelfields.add(txtFechaNacimiento);
return panelfields;
}
// panel que contiene los botones
private JPanel getButtonsPanel
() {
btnNuevo.
setPreferredSize(new Dimension(100,
40)); btnRegistrar
= new JButton("Registrar"); btnRegistrar.
setPreferredSize(new Dimension(100,
40)); btnSalir.
setPreferredSize(new Dimension(100,
40));
panelBotones.add(btnNuevo);
panelBotones.add(btnRegistrar);
panelBotones.add(btnSalir);
return panelBotones;
}
// metodo que asocia la vista con el controlador
@Override
public void setControlador(Controller controlador)
{
btnNuevo.addActionListener(controlador);
btnRegistrar.addActionListener(controlador);
btnSalir.addActionListener(controlador);
}
// metodo que limpia los fields
@Override
public void limpiar() {
txtNombre.setText("");
txtPrimerApellido.setText("");
txtSegundoApellido.setText("");
cboTipoUsuario.setSelectedIndex(0);
txtFechaNacimiento.setText("");
txtNombre.requestFocus();
}
@Override
public void arrancar()
{
config();
}