Mejora de los NumberFormatedTextFields
This commit is contained in:
@@ -32,10 +32,20 @@ import java.awt.event.KeyEvent;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
|
||||
/**
|
||||
* Crea un JTextField que formatea automaticamente su texto como un integer el cual se puede obtener
|
||||
* con el metodo getValue. Ademas de tener comportamientos especiales:
|
||||
* - Al ganar foco se selecciona todo el texto.
|
||||
* - Al perder foco formatea el texto como numero.
|
||||
* - Solo se pueden ingresar 9 digitos.
|
||||
*/
|
||||
public class NumberFormatedTextField extends JTextField {
|
||||
private int value;
|
||||
private NumberFormat nf;
|
||||
|
||||
/**
|
||||
* Crea una instacia del objeto
|
||||
*/
|
||||
public NumberFormatedTextField() {
|
||||
super();
|
||||
|
||||
@@ -45,15 +55,29 @@ public class NumberFormatedTextField extends JTextField {
|
||||
this.addKeyListener(new FieldKeyAdapter());
|
||||
}
|
||||
|
||||
/**
|
||||
* Guarda el integer entregado y lo muestra en el campo.
|
||||
*/
|
||||
public void setValue(int value){
|
||||
this.value = value;
|
||||
this.setText(nf.format(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Llama a readValue por un bug seguramente relacionado con el focus listener:
|
||||
* - No actualizaba el valor al momento de hacer requestfocus a otro componente, probablemente porque no alcanza
|
||||
* a realizarse la accion antes que ocurra la siguiente
|
||||
*
|
||||
* Fuerza a que se lea el valor en el textfield antes de retornarlo
|
||||
*/
|
||||
public int getValue(){
|
||||
this.readValue();
|
||||
return this.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lee el valor en el texto y lo almacena en la instancia
|
||||
*/
|
||||
private void readValue(){
|
||||
try {
|
||||
String currentText = this.getText();
|
||||
@@ -65,6 +89,9 @@ public class NumberFormatedTextField extends JTextField {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Formatea el value y lo muestra en el field
|
||||
*/
|
||||
private void formatText(){
|
||||
this.setText(nf.format(this.value));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user