28 de abr. de 2005

Objetos Swing

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();
}
}
}
}