domingo, 29 de agosto de 2010

DocumentListener interno en una clase

En esta clase añadimos DocumentListener y no hace falta que tengamos que construir una clase de DocumentListener.

import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import javax.swing.text.Document;

public class DobleDelNumeroBis extends javax.swing.JFrame{
        public DobleDelNumeroBis() {      
         initComponents();        
    }
   
    private void initComponents() {
        jTF_DobleNumero = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        getContentPane().setLayout(null);
                            
        jTF_Numero.getDocument().addDocumentListener (new DocumentListener(){
             public void insertUpdate(DocumentEvent e) {
                calculaValorDoble(e);
            }
            public void removeUpdate(DocumentEvent e) {
                    calculaValorDoble(e);
            }
            public void changedUpdate(DocumentEvent e) {                  
                                }
          
            private void calculaValorDoble(DocumentEvent e) {
                Document textoNumero = e.getDocument();               
                              
                  String numeroEnLetras = DobleDelNumeroBis.getText_jTF_Numero();
                 
                  try{
                      double numero= Double.parseDouble(numeroEnLetras);
                      double numeroDoble = numero * 2;
                      DobleDelNumeroBis.setText_jTF_DobleNumero(""+numeroDoble);
                      DobleDelNumeroBis.setText_jLabel4(" ");
                  }catch (NumberFormatException nfe){            
                         DobleDelNumeroBis.setText_jLabel4("El valor actual no es un n˙mero real v·lido. CorrÌjalo. ");
                         DobleDelNumeroBis.setText_jTF_DobleNumero(" ");            
                  }          
          }
        });                      
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jTF_Numero.setFont(new java.awt.Font("Tahoma", 1, 14));
        jTF_Numero.setForeground(new java.awt.Color(0, 0, 153));
        jTF_Numero.setText("0");
        getContentPane().add(jTF_Numero);
        jTF_Numero.setBounds(240, 60, 230, 30);
       
        jTF_DobleNumero.setEditable(false);
        jTF_DobleNumero.setFont(new java.awt.Font("Tahoma", 1, 14));
        jTF_DobleNumero.setForeground(new java.awt.Color(153, 0, 0));
        jTF_DobleNumero.setText("0");
        getContentPane().add(jTF_DobleNumero);
        jTF_DobleNumero.setBounds(240, 130, 230, 30);

        /* Fijamos las propiedades para la etiqueta que acompaÒa al campo jTF_Numero*/
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel1.setText("N\u00famero:");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(100, 60, 130, 30);

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18));
        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel2.setText("Doble del N\u00famero:");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(10, 130, 220, 30);

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 13));
        jLabel3.setForeground(new java.awt.Color(0, 0, 255));
        jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel3.setText("Cada vez que modifiques el valor de n\u00famero se actualizar\u00e1 autom\u00e1ticamente el valor de su doble.");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(10, 190, 640, 50);
        jLabel4.setBorder(new javax.swing.border.TitledBorder("\u00c1rea de mensajes."));
        getContentPane().add(jLabel4);
        jLabel4.setBounds(20, 250, 620, 80);
        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 18));
        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel4.setForeground(new java.awt.Color(255,0,0));
       
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-669)/2, (screenSize.height-406)/2, 669, 406);
    }
  
    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DobleDelNumeroBis().setVisible(true);
            }
        });
    }
   
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
   
    private static javax.swing.JLabel jLabel4;
    private static javax.swing.JTextField jTF_DobleNumero;
    private static javax.swing.JTextField jTF_Numero;
  
    public static  String getText_jTF_Numero(){
        return jTF_Numero.getText();
    }
   
    public static void setText_jTF_DobleNumero(String texto){
        jTF_DobleNumero.setText(texto);
    }
    public static void setText_jLabel4(String texto){
        jLabel4.setText(texto);
    }
}

No hay comentarios:

Publicar un comentario