Foros del Web » Programación para mayores de 30 ;) » Java »

Algo sencillo: TextFields, actualizar en tiempo real

Estas en el tema de Algo sencillo: TextFields, actualizar en tiempo real en el foro de Java en Foros del Web. Hola, estoy haciendo un proyecto en java con netbeans. Tengo un textfield(formateado para nº reales) llamado precioTotal y quiero que mediante que se introduzcan cantidades ...
  #1 (permalink)  
Antiguo 17/06/2009, 06:59
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Algo sencillo: TextFields, actualizar en tiempo real

Hola, estoy haciendo un proyecto en java con netbeans.

Tengo un textfield(formateado para nº reales) llamado precioTotal y quiero que mediante que se introduzcan cantidades en precio1, precio2 , precio3 y descuento1, ese campo, precioTotal se vaya actualizando

Es decir si precio1=20,30 -------->PrecioTotal se pondría automáticamente en 20,..... según vooy escribiendo 20,.... en precio1

Si precio2=2,20 ----------->PrecioTotal=22,50

Lo tengo programado para que aparezca todo esto en PrecioTotal y que me calcule las sumas y el descuento a través de un jButton y su ActionPerformed correspondiente, pero lo que quiero es que lo haga, en el momento que voy metiendo las cantidades en los campos.

Gracias
  #2 (permalink)  
Antiguo 17/06/2009, 08:02
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

para eso hay que implementar la interfaz KeyListener

aqui te pongo un codigo de ejemplo, es un applet pero facilmente lo puedes adaptar a tus necesidades

Código PHP:
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.*;

public class 
KeyEventDemo extends JApplet implements KeyListenerActionListener {
    
JTextField displayArea;
    
JTextField typingArea;

    public 
void init() {
    
typingArea = new JTextField(20);
    
typingArea.addKeyListener(this);
    
displayArea = new JTextField(20);
    
JPanel contentPane = new JPanel();
    
contentPane.setLayout(new BorderLayout());
    
contentPane.add(typingAreaBorderLayout.NORTH);
    
contentPane.add(displayAreaBorderLayout.CENTER);
    
setContentPane(contentPane);
    }
    
    public 
void keyPressed(KeyEvent e) {
    
displayInfo(e);
    }
    
    protected 
void displayInfo(KeyEvent e){
    
int keyCode e.getKeyCode();
    
String keyText e.getKeyText(keyCode);
    
displayArea.setText(keyText);
    }

    public 
void keyTyped(KeyEvent e) {}
    public 
void keyReleased(KeyEvent e) {}
    public 
void actionPerformed(ActionEvent e) {}  

Saludos
  #3 (permalink)  
Antiguo 17/06/2009, 09:58
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Gracias drac94, me lo puedes explicar un poco? Soy novato y no domino mucho.
Orientame un poco para que es cada parte del codigo y yo investigo
Gracias de nuevo
  #4 (permalink)  
Antiguo 17/06/2009, 13:19
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Código PHP:
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.*;

// creamos nuestra clase e implementamos la interfaz KeyListener que es la que nos va a dar la posibilidad de escuchar el teclado
public class KeyEventDemo extends JApplet implements KeyListener
    
JTextField displayArea//creamos un campo de texto, donde vamos a escribir
    
JTextField typingArea;// otro campo de texto donde va a aparecer lo que escribamos en el campo de arriba

    
public void init() {
// en esta parte solo le damos forma a la ventanita
    
typingArea = new JTextField(20);
    
typingArea.addKeyListener(this); //y aqui esta lo importante, 
//le decimos que nuestro textbox q va a escuchar el teclado
    
displayArea = new JTextField(20);
    
JPanel contentPane = new JPanel();
    
contentPane.setLayout(new BorderLayout());
    
contentPane.add(typingAreaBorderLayout.NORTH);
    
contentPane.add(displayAreaBorderLayout.CENTER);
    
setContentPane(contentPane);
    }
   
// la interfaz keylistener tiene tres metodos, keypressed, cuando presionas una
//tecla, keytyped, cuando esta presionada, y keyreleased, cuando la sueltas 
//siempre suceden las tres y dependera de tu caso el cual uses
//aqui usaremos keypressed, e es la tecla que se presiono
    
public void keyPressed(KeyEvent e) {
    
displayInfo(e);  //llamamos al metodo displayinfo
    
}
    
    protected 
void displayInfo(KeyEvent e){
    
int keyCode e.getKeyCode();  //obtenemos el codigo de la tecla
    
String keyText e.getKeyText(keyCode);  //luego el caracter
    
displayArea.setText(keyText);  //lo pintamos en el campo de texto de abajo
    
}

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

  #5 (permalink)  
Antiguo 18/06/2009, 05:35
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Ok la implementacion entendida, ahora me lio (no sé) como pasarlo a la interfaz grafica con mis JFormattedTextFields(4,5 y 6) precio1,precio2,precio3 y PrecioTotal . Además de como añadir los precios previos para que sean escuchados por PrecioTotal¿?
Me parece que no era tan sencillo, jejej

la clase he puesto asi en el package eventos y mi codigo de la interfaz que estoy programando mas abajo:

package eventos;

import javax.swing.*;
import java.awt.event.*;

// creamos nuestra clase key implementamos la interfaz KeyListener que es la que nos va a dar la posibilidad de escuchar el teclado
public class KeyEventDemo implements KeyListener{
JFormattedTextField displayArea; //creamos un campo de texto, donde vamos a escribir
JFormattedTextField typingArea;// otro campo de texto donde va a aparecer lo que escribamos en el campo de arriba

public void init() {
// en esta parte solo le damos forma a la ventanita
typingArea = new JFormattedTextField();
typingArea.addKeyListener(this);
//y aqui esta lo importante,
//le decimos que nuestro textbox que va a escuchar el teclado
displayArea = new JFormattedTextField();

}

// la interfaz keylistener tiene tres metodos, keypressed, cuando presionas una
//tecla, keytyped, cuando esta presionada, y keyreleased, cuando la sueltas
//siempre suceden las tres y dependera de tu caso el cual uses
//aqui usaremos keypressed, key es la tecla que se presiono
public void keyPressed(KeyEvent key) {
displayInfo(key); //llamamos al metodo displayinfo que a continuacion implementamos
}

protected void displayInfo(KeyEvent key){
int keyCode = key.getKeyCode(); //obtenemos el codigo de la tecla
String keyText = KeyEvent.getKeyText(keyCode); //luego el caracter
displayArea.setText(keyText); //lo pintamos en el campo de texto de abajo
}

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


Ahora el problema es como lo aplico al JFormattedTextField de PrecioTotal, mi codigo comienza asi si os sirve de referencia:

package comercialelectrica.modulos;

import eventos.KeyEventDemo;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

/**
*
* @author Pablo
*/
public class AñadirAlquiler extends javax.swing.JDialog {

private static JDialog dialogAñadirAlquiler = new JDialog();

public static JDialog getJDialog(){
return dialogAñadirAlquiler;
}

public static void setJDialog(JDialog Jdia){
dialogAñadirAlquiler = Jdia;
}

/** Creates new form AñadirAlquiler */
public AñadirAlquiler(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.jFormattedTextField1.setValue(new Date());
this.jFormattedTextField2.setValue(new Date());
this.jFormattedTextField3.setValue(new Date());

this.jFormattedTextField7.addKeyListener(new KeyEventDemo());//No sé seguir y si comenzaría asi¿? jformattedtextfield7 = PrecioTotal


private void BuscarCliente(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
setJDialog(this);
this.setVisible(false);
new BuscarCliente(this, true).setVisible(true);
//this.jTextField2.setText(comercialelectrica.modulo s.ListaClientes.getCliente());
//Pinta el nombre del cliente que hemos seleccionado. Pero para ello hay que crearlo en un evento de activación de ventana
}

private void BuscarArticulo(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
setJDialog(this);
this.setVisible(false);
new BuscarArticulo(this, true).setVisible(true);

} .........................
.........................................
........................................
......................................
etcetera

Última edición por Zidek; 18/06/2009 a las 05:40
  #6 (permalink)  
Antiguo 18/06/2009, 16:13
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Necesito ayuda...no soy capaz
  #7 (permalink)  
Antiguo 21/06/2009, 05:37
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Nadie más sabe acerca de esto? Llevo 3 días investigandolo con lo de drac94 y no consigo nada. Gracias de nuevo
  #8 (permalink)  
Antiguo 30/06/2009, 16:04
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

drac94 o quien sea, a ver si me podeis concretar como hacerlo

Gracias
  #9 (permalink)  
Antiguo 06/09/2010, 08:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

alguin sabe como centrar un jinternalframe cuando se es invocado de un menuitem o un JButton.. lo que pasa es lo siguiente estoy dando vueltas con mi sistema de tesis.
me explico mejor tengo mi pantalla principal(jframe) q la tengo fullscrem de esta llamo todas mis otras ventanas q por sierto todas extienden de JInternalframe, al llamarlas les doy la ubicacion en que quiero q se abran. esto es lo que estoy tratando de evitar por q cuando hay una variacion en la resolucion de la pantalla tanbien cambia la ubicacion de la pantalla internar y lo que estoy tratando de hacer es evitar esto. lo que quiero es crear algun metodo que centre esa pantalla interna sin importar la resolucion de la pantalla. Si alguien sabe y quiere compartir su conocimiento le estaria muy agradecido...saludos y suerte...
  #10 (permalink)  
Antiguo 06/09/2010, 08:58
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Algo sencillo: TextFields, actualizar en tiempo real

Hola juanjosemoreno

Te recuerdo el aviso que había al final de este tema y que parece que no has leído o no le has hecho ni caso.



Tema cerrado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:46.