Formatar String

7 respostas
F

Oi pessoal,

Estou usando SWT e tenho um campo do tipo text onde quero formatar o texto que sera digitado em formato de “hora”, ou seja ##:##:##

À medida que os valores são digitados os dois pontos “:” sao mostrados separando o texto, por exemplo, se eu entrar com 123456 o campo deve mostrar 12:34:56

O que poderia usar para fazer essa formatacao ?
Ja olhei o MaskFormatter mas é do SWING e nao me serve ja que estou usando SWT.

Da mesma maneira ja quis fazer a mesma coisa para formatar moeda. Se eu entro 12345 (text) ele vai mostrando progressivamente:
0,01
0,12
1,23
12,34
123,45

Sera que existe algo que possa me ajudar tratar esses eventos ??
Alguma dica ??? :roll:
obrigado,

7 Respostas

_fs

Olá, bem vindo!

http://www.guj.com.br/posts/list/447.java

F

Obrigado ! 8)

Ja tinha visto esse topico, mas como disse nao estou usando SWING e sim SWT, que nao possui o JFormattedTextField ftf = new JFormattedTextField();

E por isso conitnuo no mesmo problema…

Utilizo o org.eclipse.swt.widgets.Text que eh uma caixa para editar uma linha de texto e um keyEvent para formatar os numeros que vou entrar…

Alguem tem uma ideia ???

_fs

Falta de atenção :expressionless: desculpe.

Gastei 20min no google procurando por alguma coisa pronta, mas nada :expressionless:

Contudo, já que você tem acesso ao objeto keyEvent, pode fazer algo como:

int key = // pega o keycode
int len = element.getText().length();
char sharp = "#".charAt(0);
String pattern = "###.###.###-##";

if( len <= pattern.length && key != 8 ) // backspace
	if( pattern.charAt( len ) != sharp )
		element.setText( element.getText() + pattern.charAt( len ) );
F

Oi !

Cara, esse esquema até funcionaria mais ai ja entra no que eu nao queria: fazer um codigo grande como solucao.

Gostaria de poder usar alguma classe do tipo format como as que existem para tratar numeros e resolver o problema em 2 linhas de codigo.

Vou precisar tambem de fazer algo muito semelhante para formatar valores (como no primeiro post), o que é mais complicado ainda que formatar a hora. :frowning:

Se voce ainda ainda tiver alguma ideia, agradeco :wink:

Obrigado,

joan

caro colega…
tive o mesmo problema pra moeda…
e não encontrei nada…
dai fiz essa gambiarra que funciona direitinho

criei essa classe StringDecimal…

public class StringDecimal {

/** Creates a new instance of StringDecimal */
public StringDecimal(String valor) {
      
    String real = "";
    String centavos = "";
    int cont = 0;


    for(int i = 0; i < valor.length()-2; i++){
    real = real+valor.charAt(i);    
}

    for(int c = valor.length()-2;  c < valor.length(); c++){
    centavos = centavos+valor.charAt(c);    
}


    valor = real+"."+centavos;

System.out.println(valor);

}

}

dai chamo ela em qualquer classe…

exe:

StringDecimal resultadoformatado = new StringDecimal(resultadoStr); // resultadoStr seria qualquer String de numeros ex : 123456789 imprimirá 1234567.89

L


Oi pessoal,

Estou usando SWT e tenho um campo do tipo text onde quero formatar o texto que sera digitado em formato de “hora”, ou seja ##:##:##

À medida que os valores são digitados os dois pontos “:” sao mostrados separando o texto, por exemplo, se eu entrar com 123456 o campo deve mostrar 12:34:56

O que poderia usar para fazer essa formatacao ?
Ja olhei o MaskFormatter mas é do SWING e nao me serve ja que estou usando SWT.

Da mesma maneira ja quis fazer a mesma coisa para formatar moeda. Se eu entro 12345 (text) ele vai mostrando progressivamente:
0,01
0,12
1,23
12,34
123,45

Sera que existe algo que possa me ajudar tratar esses eventos ??
Alguma dica ???
obrigado,

Olá Rapaziada,
ressuscitando o topico…

Finddipa, você conseguiu achar uma solução?
Ou tem alguma ideia que possa me ajudar.
Estou com o mesmo problema.
Tambem estou desenvolvendo com SWT.

Obrigado.

T

http://www.lwvcl.com/swt.php

Criado 29 de março de 2005
Ultima resposta 29 de jul. de 2009
Respostas 7
Participantes 5