estou usando o netbeans, entaum tive q instanciar o JDoubleField dentro do codigo de pos-criação do JTextField pra conseguir formatá-lo e na hora de limpar este campo, eu simplesmente naum consigo.
codigo do JDoubleField: http://www.guj.com.br/posts/list/54913.java#289551
(ateh deixei esta mesma pergunta lah, mas ninguém respondeu ainda…)
packagebrandao.util.swing;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.text.DecimalFormat;/** * * @author NETO */publicclassJDoubleFieldextendsjavax.swing.JTextField{privateStringvalue="000";privateStringDoubleFormat="#.00";privateDecimalFormatDoubleFormat_=newDecimalFormat(DoubleFormat);/** Creates a new instance of JDoubleField */publicJDoubleField(){super();instalar();setText(instalarMask(value));}publicJDoubleField(Stringtext){instalar();super.setText(instalarMask(text));}privatesynchronizedvoidatualizar(charkey){if(key>='0'&&key<='9'){value=value+key;}elseif(key=='\b'){if(!value.equals("000")&&value.length()>1)value=value.substring(0,value.length()-1);}}privatesynchronizedStringinstalarMask(Stringvalue){if(value.charAt(0)=='0'){value=value.substring(1,value.length());}while(value.length()<3)value="0"+value;this.value=value;returnvalue.substring(0,value.length()-2)+","+value.substring(value.length()-2,value.length());}privatevoidinstalar(){super.setHorizontalAlignment(javax.swing.JTextField.TRAILING);super.addKeyListener(newKeyListener(){publicvoidkeyTyped(KeyEvente){atualizar(e.getKeyChar());setText(instalarMask(value));e.consume();}publicvoidkeyPressed(KeyEvente){}publicvoidkeyReleased(KeyEvente){}});}/** O método retorna o valor no formato double. * @since 1.0 * @return Valor exibido no campo. */publicdoublegetValue(){Stringvalor=getText().replace(',','.');returnDouble.parseDouble(valor);}/** O método atualiza o valor. * @since 1.0 * @param valor Valor atualizado. */publicvoidsetValue(doublevalor){if(valor==0)value="000";elsevalue=DoubleFormat_.format(valor).replaceAll(",","");setText(instalarMask(value));}}
use o setValue( 0 ) para limpar
C
claudete
valeu, mas fiz umas gambi pra ele poder enxergar os metodos, mesmo publicos, do JDouble… justamente pq no netbeans, eu naum consigo simplesmente aplicar mascara se naum for no codigo de pre/pos criacao/iniciacao… (pelo menos eh assim q tenho feito, pois no construtor naum tenho conseguido…descobri essa do netbeans aki no GUJ)
e implementei o setValue assim:
public void setValue(String valor){
super.setText(instalarMask(valor));
}