Hola que tal, después de una larga ausencia en mi blog tengo una nueva idea y he decidido realizarla, espero que a uno o mas le interese esta librería para autorellenar jTexfield, jSpinner todo esto en netbeans.
No se ustedes pero hay veces que ami se me complica hacer el llenado de las cajas de texto radio-buttons cheks y demás, bueno pues con esta solución evitaremos esa fatiga de estar poniendo
cliente.setNombre(cajaDeTextoNombre.getText());
cliente.setApellido(cajaDeTextoApellido.getText());
cliente.setPuesto(cajaDeTextoPuesto.getText());
claro todo esto después de una buena validación de las cajas de texto(si es necesario), pues todo este rollo se acabo gracias a esta librería.
A considerar.
Si bien esta librería es útil solamente que tiene algunas cuestiones importantes(ademas de alguno que otro bug que trato de corregir), pero la primera de estas es:
Uso de un bean.- Es decir el Autofill se hace valer de beans por ejemplo
public class Usuario {
private String nombre;
private int numero;
private double numeroD;
public double getNumeroD() {
return numeroD;
}
public void setNumeroD(double numeroD) {
this.numeroD = numeroD;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
}
Para los que estamos acostumbrados a usar estos beans o skeletons no se nos hace raro pero ojo el bean tiene propiedades privadas asi que se tienen que encapsular y dar salida a las variables (poner get y set de cada variable).
La segunda y que yo considero un poco desgraciada es que en el Frame tienes que tener la caja de texto con el nombre ke tienes en el bean por ejemplo
Frame=private JTextfield nombre ————- Bean= private String nombre
Frame=private JTextfield numero ————- Bean= private int numero;
Los dos con su respectivos get y set, osea que tambien se tienen que generar los get y set en el frame(para que netbeans lo haga automaticamente solamente presiona Alt+Insert(en el area de codificacion) -> Getter and Setter-> seleccionar los campos a generar.)
y sin mas rodeos solamente poner
AutoFill.fill(bean, frame);
y tiene su metodo de reversa que es
AutoFill.collect(bean, frame);
aqui les dejo un ejemplo de como quedaria
package autofill;
import javax.swing.JOptionPane;
import javax.swing.JSpinner;
import javax.swing.JTextField;
/**
*
* @author root
*/
public class Frame extends javax.swing.JFrame {
/** Creates new form Frame */
public Frame() {
initComponents();
Usuario m=new Usuario();
m.setNombre(«Carlos Antonio Landin Alvarado»);
m.setNumero(12565);
m.setNumeroD(15.5);
AutoFill.fill(m, this);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings(«unchecked»)
// <editor-fold defaultstate=»collapsed» desc=»Generated Code»>
private void initComponents() {
nombre = new javax.swing.JTextField();
numero = new javax.swing.JSpinner();
numeroD = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText(«Collect»);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(numeroD, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(numero, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(nombre, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 222, Short.MAX_VALUE))
.addContainerGap(23, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(nombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(numero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(numeroD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Usuario m2=new Usuario();
AutoFill.collectIn(m2, this);
JOptionPane.showMessageDialog(this, «valor de nombre: «+m2.getNombre()
+»\n Valor de Numero:»+m2.getNumero()+»\n Valor de Numero Double:»+m2.getNumeroD());
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Frame().setVisible(true);
}
});
}
public JTextField getNombre() {
return nombre;
}
public void setNombre(JTextField nombre) {
this.nombre = nombre;
}
public JSpinner getNumero() {
return numero;
}
public void setNumero(JSpinner numero) {
this.numero = numero;
}
public JTextField getNumeroD() {
return numeroD;
}
public void setNumeroD(JTextField numeroD) {
this.numeroD = numeroD;
}
// Variables declaration – do not modify
private javax.swing.JButton jButton1;
private javax.swing.JTextField nombre;
private javax.swing.JSpinner numero;
private javax.swing.JTextField numeroD;
// End of variables declaration
}
Aqui les pongo la direccion para descargar el Autorrellenador de campos para netbeans