JDoubleField e netbeans

2 respostas
C

pessoal,

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…)

 tentei:

setText("")

setText(0)

setText(000);

criar um metodo setValue no JDouble

chamar o construtor do JDouble(tentei com os dois construtores)

e nada deu certo

Alguém tem alguma ideia?

2 Respostas

P

Olá claudete!!!

Não fiz a entrada de dados… Mas agora esta feito.

package brandao.util.swing;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.text.DecimalFormat;

/**
 *
 * @author NETO
 */
public class JDoubleField extends javax.swing.JTextField{
    
    private String value = "000";
    private String DoubleFormat                             = "#.00";    
    private DecimalFormat DoubleFormat_                     = new DecimalFormat(DoubleFormat);
    
    /** Creates a new instance of JDoubleField */
    public JDoubleField() {
        super();
        instalar();
        setText(instalarMask(value));
    }

    public JDoubleField(String text) {
        instalar();
        super.setText(instalarMask(text));
        
    }
    
    private synchronized void atualizar(char key){
        if(key >= '0' && key <='9'){
            value = value + key;
        }
        else
        if (key == '\b'){
            if(!value.equals("000") && value.length()>1)
                value = value.substring(0,value.length()-1);
        }        
    }
    
    private synchronized String instalarMask(String value){
        if(value.charAt(0) == '0'){
            value = value.substring(1,value.length());
        }
        
        while(value.length()<3)
            value = "0" + value;
        
        
        this.value = value;
        return value.substring(0,value.length()-2) +  "," + value.substring(value.length()-2,value.length());
    }
    
    private void instalar(){
        super.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
        super.addKeyListener(new KeyListener(){
            
            public void keyTyped(KeyEvent e) {
                atualizar(e.getKeyChar());
                setText(instalarMask(value));
                e.consume();
            }

            public void keyPressed(KeyEvent e) {
            }

            public void keyReleased(KeyEvent e) {
            }
            
        });
    }

    /** O método retorna o valor no formato double.
     *  @since 1.0
     *  @return Valor exibido no campo.
     */
    public double getValue() {
        String valor = getText().replace(',','.');
        return Double.parseDouble( valor );
    }
    
    /** O método atualiza o valor.
     *  @since 1.0
     *  @param valor Valor atualizado.
     */
    public void setValue( double valor ){
        if ( valor == 0 )
            value = "000";
        else
            value = DoubleFormat_.format( valor ).replaceAll(",","");

        setText( instalarMask( value ) );

    }
        
}

use o setValue( 0 ) para limpar

C

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

fungou! :smiley:

thanx

Criado 4 de maio de 2007
Ultima resposta 4 de mai. de 2007
Respostas 2
Participantes 2