Estou desenvolvendo alguns objetos do Swing para o projeto desktop que estou trabalhando e qualquer ajuda será bem vinda. A idéia é criar um projeto Open com esses objetos.
Eis o código:
/*
* FloatTextField.java
*
* Created on 20/04/2005 by jp
*
*/
// TODO :
// criar limitador de casas decimais
// criar limitador de casas inteiras
// posicionamneto do cursor e selecao de texto
// trabalhar somente com ponto ou virgula (opcao)
// implementar paste
// implementar rotinas de internaciolização (locale)
package br.com.icbeu.util;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;
public class FloatTextField extends JTextField {
public FloatTextField() {
this.addKeyListener((KeyListener) new FloatKeyListener());
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
}
public void paste() {
}
public float getFloat() {
String texto = getText();
if (texto.contains(",")) {
texto = texto.replace(",", ".");
}
float f = 0;
if (texto.length() == 0) texto = "0";
try {
f = Float.parseFloat(texto);
} catch ( Exception e) {
e.printStackTrace();
}
return f;
}
private class FloatKeyListener extends KeyAdapter {
boolean ok = false;
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
ok = ((code > 95 && code <>
(code > 47 && code <>
(code == 8) || // backspace
(code == 127) || // delete
(code == 110) || // virgula teclado numerico
(code == 0) || // ponto teclado numerico
(code == 44) || // virgula teclado alfa
(code == 46) // ponto teclado alfa
);
if ((getText().contains(",") || getText().contains("."))
&& (code == 110 || code == 44)) {
ok = false;
}
if ((getText().contains(".") || getText().contains(","))
&& (code == 0 || code == 46)) {
ok = false;
}
}
public void keyTyped(KeyEvent e) {
if (!ok) {
e.consume();
}
}
}
}