Jump to content

Ayuda actionListener


Recommended Posts

Hola buenas tardes

 

 

Agradeceria mucho al que me pudiera ayudar, necesito terminar una aplicacion la cual carga datos a un jcombobox de forma dinamica ( desde un fichero) Para lo cual para poder hacerlo estoy utilizando un actionListener sobre el jcombobox pero el problema esta en que le agregue una opción que al presionar la opcion del combobox muestra un item "presionar aqui" entonces el problema aca surge en que si presiono mas de una vez esa opcion no para de cargar los mismos datos. Por eso mismo vengo a este foro a consultar que poder hacer para revertir esta situacion (al presionar "presione aqui" se deberia desplegar solo una vez las opciones) De verdad agradeceria la ayuda por que la necesito urgentemente

 

Dejo el codigo.

 

 

public ReservarBoleto() {

 

initComponents();

 

btnUsuarioFida.addItem("seleccione item de la lista");

btnUsuarioHida.addItem("Seleccione item de la lista");

 

 

 

}

 

private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt) {

btnUsuarioFida.addActionListener(this);

}

 

public void actionPerformed (ActionEvent e){

 

if (e.getSource() == btnUsuarioFida){

try{

 

 

Scanner sc = new Scanner (new File ("c:/tomardatos.txt"));

 

while(true){

 

if (sc.hasNextLine()==false)break;

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

String FechaIda = sc.nextLine().toString();

String FechaRegreso = sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

sc.nextLine();

btnUsuarioFida.addItem(FechaIda);

btnUsuarioFregreso.addItem(FechaRegreso);

 

} }

catch(IOException x) {System.out.println("error");};

 

}}

Link to comment
Share on other sites

El problema sería que te carga muchas veces los mismos datos en el combobox??...algo asi:

 

Primera vez:

Peras

Manzanas

Uvas

 

Segunda vez:

 

Peras

Manzanas

Uvas

Peras

Manzanas

Uvas

 

Algo asi y hasta el infinito y mas allá :tontogay: ??...eso es lo que te pasa o no??

 

Saludos :krider:

Edited by rob_loser
Link to comment
Share on other sites

Por lo que entendí de tu código, creo que debes eliminar esto:

private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt)
{
   btnUsuarioFida.addActionListener(this);
}

y cualquier referencia a él (al parecer lo estás usando como manejador de evento). Si no quieres borrarlo, simplemente enciérralo como comentario.

 

Y deberías poner en alguna parte (cuando se inicia el formulario que tiene el botón) la línea:

   btnUsuarioFida.addActionListener(this);

 

así que creo que iría en el constructor ReservarBoleto, o sea, quedaría así:

public ReservarBoleto()
{

   initComponents();

   btnUsuarioFida.addItem("seleccione item de la lista");
   btnUsuarioHida.addItem("Seleccione item de la lista");

   btnUsuarioFida.addActionListener(this);
}


Otra cosa, arregla la forma en que lees las líneas desde el archivo. Y tienes que poner una condición en el ciclo while, creo que es obvio cuál es...

Link to comment
Share on other sites

Por lo que entendí de tu código, creo que debes eliminar esto:

private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt)
{
btnUsuarioFida.addActionListener(this);
}

y cualquier referencia a él (al parecer lo estás usando como manejador de evento). Si no quieres borrarlo, simplemente enciérralo como comentario.

 

Y deberías poner en alguna parte (cuando se inicia el formulario que tiene el botón) la línea:

btnUsuarioFida.addActionListener(this);

 

así que creo que iría en el constructor ReservarBoleto, o sea, quedaría así:

public ReservarBoleto()
{

initComponents();

btnUsuarioFida.addItem("seleccione item de la lista");
btnUsuarioHida.addItem("Seleccione item de la lista");

btnUsuarioFida.addActionListener(this);
}


Otra cosa, arregla la forma en que lees las líneas desde el archivo. Y tienes que poner una condición en el ciclo while, creo que es obvio cuál es...

No es efectivo tu metodo ya que al momento de ingresar la clausula btnUsuarioFida.addActionListener(this);

indica que hay fugas en el constructor

(En todo caso hice unas modificaciones en el constructor para pasar parametros. de todas maneras los dejo aca.

 

 

public class ReservarBoleto extends javax.swing.JFrame implements ActionListener {

int asientoEcoTrans;

int asientoEjeTrans;

int asientoPrimTrans;

 

public ReservarBoleto(int asientoEcoTrans, int asientoEjeTrans, int asientoPrimTrans) {

 

initComponents();

this.asientoEcoTrans = asientoEcoTrans;

this.asientoEjeTrans = asientoEjeTrans;

this.asientoPrimTrans = asientoPrimTrans;

btnUsuarioFida.addItem("seleccione item de la lista");

btnUsuarioHida.addItem("Seleccione item de la lista");

btnUsuarioFregreso.addItem("Seleccione fehca de regreso");

 

}

 

 

 

private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt) {

btnUsuarioFida.addActionListener(this);

btnUsuarioFregreso.addActionListener(this);

UsuarioCiudadIda.addActionListener(this);

btnUsuarioCiudadRegreso.addActionListener(this);

btnUsuarioHida.addActionListener(this);

btnUsuarioHregreso.addActionListener(this);

}

 

Gracias por tu tiempo y tu respuesta.

Edited by juckion
Link to comment
Share on other sites

:mmm: Lo que todavía no logro entender es cómo sabes cuál es el evento que se está produciendo. O sea, un control puede reaccionar a varios eventos (cuando el mouse pasa por encima, cuando le hacen clic, cuando se actualiza, etc.). Esa parte no la veo en ningún lado, y puede ser que el manejador del evento (actionPerformed) se esté ejecutando por varios eventos distintos al que tú quieres manejar ¿no debería haber algo por ahí que indique que sólo se ejecute al hacer clic, y no con otros eventos?

O quizás deberías verificar el parámetro "ActionEvent e"...

 

Además no sé desde dónde se llama a private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt) :nose:

Link to comment
Share on other sites

Mira lo que tengo es una carga de parametros que se van a pasar al actionperformed en el metodo public void actionPerformed (ActionEvent e) en el cual ese metodo lee todos los datos que solicito y luego en el privado (private void actionPerformed) cargo lo correspondiente a lo que se solicitó en el metodo public...mira para hacerla mas corta...hice algo como esto, la unica difierencia es q lo adapte al actionperformed para el combobox. La carga se hace desde el this.

http://www.youtube.com/watch?v=5Y-UEUS9s0Q&feature=relmfu

 

gracias por el tiempo de lectura.

Edited by juckion
Link to comment
Share on other sites

:mmm: Creo que ya estoy cachando el algo, por lo que entiendo, la interfaz ActionListener es la interfaz padre y hay otras varias especializadas que sirven para manejar eventos más específicos. Ahí es donde estaría el problema, ActionListener es muy general y tú necesitas un manejador de eventos específico para un JComboBox. Creo que la interfaz que te serviría sería ItemListener, entonces, en vez de implementar un actionPerformed, tendrías que implementar un itemStateChanged y revisar los campos SELECTED y DESELECTED de la clase ItemEvent.

Para agregar el manejador del evento, necesitarías usar addItemListener.

 

Pero de todas formas creo que tienes que poner el addItemListener en el constructor... :nose:

 

Y creo que el método private void btnUsuarioFidaActionPerformed(java.awt.event.ActionEvent evt) no está siendo llamado en ninguna parte...

Link to comment
Share on other sites

Oie perdon por volver a molestarte pero intente implementar lo que dijiste pero me sigue con el mismo problema y segundo que objeto en este caso tendria q implementar en el addItemListener?

Perdona por molestar de nuevo pero de verdad q me urge este temita D:

import java.io.*;

import java.util.*;

import java.awt.event.*;

public class jframeparaprobar extends javax.swing.JFrame implements EventListener {

 

/** Creates new form jframeparaprobar */

public jframeparaprobar() {

initComponents();

jComboBox1.addItemListener(¿que agregar aca?);

jframeparaprobar objeto = new jframeparaprobar();

 

}

public void itemStateChanged(ItemEvent e){

if (e.getSource() == jComboBox1){

try{

 

 

Scanner sc = new Scanner (new File ("c:/ingresovuelo.txt"));

 

while(true){

 

if (sc.hasNextLine()==false)break;

sc.nextLine();

sc.nextLine();

sc.nextLine();

String precioAsientoEco = sc.nextLine();//precio asiento eco

sc.nextLine();

String precioAsientoEje = sc.nextLine();//precio asiento eje

sc.nextLine();

String precioAsientoPrim = sc.nextLine();//precio asiento prim

sc.nextLine();

String ciudadOrigen = sc.nextLine();

String ciudadDestino = sc.nextLine();

String FechaIda = sc.nextLine().toString();

String FechaRegreso = sc.nextLine();

String horaRegreso =sc.nextLine();

String minutoRegreso = sc.nextLine();

String horaIda =sc.nextLine();

String minutoIda = sc.nextLine();

//this.asientoEcoTrans = Integer.parseInt(precioAsientoEco);

//this.asientoEjeTrans = Integer.parseInt(precioAsientoEje);

//this.asientoPrimTrans = Integer.parseInt(precioAsientoPrim);

jComboBox1.addItem(precioAsientoEco);

jComboBox1.removeAllItems();

jframeparaprobar objeto = new jframeparaprobar();

} }

catch(IOException x) {System.out.println("error");};

 

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...