Lo que conseguimos con los DocumentListener es una respuesta inmediata sin necesidad de pulsar un boton, y para ello tendremos que crear la clase que lo implemente, un ejemplo:
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import javax.swing.text.Document;
public class ImplementacionDocumentListener implements 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();
if (textoNumero.getProperty("nombre").equals("numero")){
String numeroEnLetras = DobleDelNumero.getText_jTF_Numero();
try{
double numero= Double.parseDouble(numeroEnLetras);
double numeroDoble = numero * 2;
DobleDelNumero.setText_jTF_DobleNumero(""+numeroDoble);
DobleDelNumero.setText_jLabel4(" ");
}catch (NumberFormatException nfe){
DobleDelNumero.setText_jLabel4("El valor actual no es un n˙mero real v·lido. CorrÌjalo. ");
DobleDelNumero.setText_jTF_DobleNumero(" ");
}
}
}
}
y luego para realizar una llamada desde otra clase donde utilizaremos el DocumentListener sera asi:
ImplementacionDocumentListener miPropioDocumentListener =
new ImplementacionDocumentListener();
jTF_Numero.getDocument().addDocumentListener (miPropioDocumentListener);new ImplementacionDocumentListener();
En el cual, la clase que lo contiene seria algo asi:
public class DobleDelNumero extends javax.swing.JFrame {
public DobleDelNumero() {
initComponents();
}
private void initComponents() {
public DobleDelNumero() {
initComponents();
}
private void initComponents() {
jTF_DobleNumero = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
getContentPane().setLayout(null);
getContentPane().setLayout(null);
ImplementacionDocumentListener miPropioDocumentListener =
new ImplementacionDocumentListener();
jTF_Numero.getDocument().addDocumentListener (miPropioDocumentListener);
jTF_Numero.getDocument().putProperty("nombre", "numero");
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);
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() {new ImplementacionDocumentListener();
jTF_Numero.getDocument().addDocumentListener (miPropioDocumentListener);
jTF_Numero.getDocument().putProperty("nombre", "numero");
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);
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[]) {
public void run() {
new DobleDelNumero().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