bersek Posted December 10, 2011 Report Share Posted December 10, 2011 Vamos por parte como dijo jack: primero : tu problema de la carga infinita radica aquí : while(true){ El archivo que estas leyendo tiene un fin es decir, tiene un numero limitado de linea a leer por lo tanto no tiene sentido que a tu ciclo while le pongas un true ya que como la condición a evaluar por defecto es true, tu siclo va a ser infinitolo que quiero decir es que no va a dejar de iterar hasta que la condición se haga false ( nunca se hace false en tu programa) o salgas del while con alguna sentencia de escape como el break o return Segundo : con respecto a la carga de los datos desde un txt El método que usas no es optimo, en mi opinión estas usando fuerza bruta para cargarlos 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(); para no alargar mucho el post ( porque son muchos los errores que tienes ) voy a agregarte el código para cargar datos de un archivo, si tienes dudas me consultas despues File f = new File("c:/archivo.txt"); try { BufferedReader bf = new BufferedReader(new FileReader(f)); String linea=null; while ((linea=bf.readLine()) != null) { System.out.println(linea); } } catch (FileNotFoundException ex) { System.out.println("Archivo no encontrado"); } catch (IOException ex) { System.out.println("Error"); } ojo, no estoy diciendo que no se pueda leer un archivo con la clase Scanner porque si se puede xd puedes llenar inmediatamente tu comboBox si agregas esta linea al cuerpo del whilenombreDelComboBox.addItem(linea); File f = new File("c:/archivo.txt"); try { BufferedReader bf = new BufferedReader(new FileReader(f)); String linea=null; while ((linea=bf.readLine()) != null) { //System.out.println(linea); nombreDelComboBox.addItem(linea); } } catch (FileNotFoundException ex) { System.out.println("Archivo no encontrado"); } catch (IOException ex) { System.out.println("Error"); } con esto queda solucionado tu problema de la carga infinita ahora si quieres cargar un comboBox dinamicamente lo unico que tienes que hacer es jugar con los listener En el siguiente codigo primero le agregamos un listener al combo Box luego en el cuerpo del metodo ActionPerformed preguntamos si el item seleccionado es igual a "click aqui" , si se cumple la condicion le quitamos el listener e invocamos el metodo cargarComboBoxFinal(); jComboBox1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { if(jComboBox1.getSelectedItem().equals("---click aqui--")){ jComboBox1.removeActionListener(this); cargarComboBoxFinal(); } } }); aqui esta el codigo del metodo cargarComboBoxFinal() en donde se cargan los valores del archivo, se agregan al combobox y le asignamos otro listener public void cargarComboBoxFinal() { jComboBox1.removeAllItems(); File f = new File("c:/archivo.txt"); try { BufferedReader bf = new BufferedReader(new FileReader(f)); String linea = null; while ((linea = bf.readLine()) != null) { // System.out.println(linea); jComboBox1.addItem(linea); } } catch (FileNotFoundException ex) { System.out.println("Archivo no encontrado"); } catch (IOException ex) { System.out.println("Error"); } jComboBox1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { System.out.println(jComboBox1.getSelectedItem()); } }); } espero que entiendas saludos Link to comment Share on other sites More sharing options...
susodicho Posted December 11, 2011 Report Share Posted December 11, 2011 (edited) Para empezar, tienes que implementar la interfaz ItemListener, así que agrégala a tu clase jframeparaprobar (o sea, tienes que agregarla después de implements). Y como el addItemListener está en la misma clase que el manejador del evento itemStateChanged simplemente le pones this como parámetro del addListener. :mmm: ¿Cuál es la idea de poner esta línea en el constructor? jframeparaprobar objeto = new jframeparaprobar(); :mmm: supongo que debería ser el constructor del JComboBox...y también la estás usando en el manejador del evento :blink: Bueno, aquí hay ejemplo simple que encontré por ahí, para que tengas una idea: import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.Icon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class MainClass extends JPanel implements ItemListener { public MainClass() { JComboBox jc = new JComboBox(); jc.addItem("Tongoy"); jc.addItem("Arica"); jc.addItem("Punta Arenas"); jc.addItem("Los Vilos"); jc.addItemListener(this); add(jc); } public void itemStateChanged(ItemEvent ie) { String s = (String)ie.getItem(); System.out.println(s); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new MainClass()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setVisible(true); } } Sobre el ciclo while: No es infinito, sólo que está mal hecho. O sea, es como escribir un ciclo for de esta manera: i = 0; for(;;) { if(i >= 10) break; printf("voy en el %i\n",i); i++; } eso funciona, pero es sacrílego... :tonto: Edited December 11, 2011 by susodicho Link to comment Share on other sites More sharing options...
juckion Posted December 15, 2011 Author Report Share Posted December 15, 2011 Gracias me sirvio mucho :D Link to comment Share on other sites More sharing options...
AshWilliams Posted December 16, 2011 Report Share Posted December 16, 2011 Entonces antes de cerrar el tema, podrías postear la solución, asi para otros usuarios que tengan un problema similar. Saludos :krider: Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now