elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Solucionado] Ordenar elementos de JCombobox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Ordenar elementos de JCombobox  (Leído 6,533 veces)
GenR_18

Desconectado Desconectado

Mensajes: 115


Ver Perfil
[Solucionado] Ordenar elementos de JCombobox
« en: 16 Febrero 2015, 22:34 pm »

Buen dia foreros.

Resulta que tengo que ordenar los elementos de un JCombobox los cuales los inserto de un archivo de texto, pero cuando hago el sort de Arrays , no los ordena y no sé porqué  :(
Código
  1. try
  2. {
  3. FileInputStream archivo = new FileInputStream(path);
  4. DataInputStream entrada = new DataInputStream(archivo);
  5. BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
  6.  
  7. String lineas;
  8.  
  9. while((lineas = buffer.readLine()) != null)
  10. {
  11. StringTokenizer st = new StringTokenizer(lineas,"-",false);
  12.  
  13. while(st.hasMoreTokens())
  14. {
  15. cities_origen[i] = st.nextToken();
  16. cities_destino[i] = st.nextToken();
  17. //System.out.println(st.nextToken());
  18. i++;
  19. }
  20. }
  21.  
  22. Arrays.sort(cities_origen);
  23.  
  24. for(String c:cities_origen)
  25. {
  26. System.out.println(c);
  27. }
  28.  
  29. /*for(int j=0; j<i; j++)
  30. {
  31. System.out.println(cities_origen[j]);
  32.  
  33. }*/
  34.  
  35. entrada.close();
  36.  
  37. }
  38. catch(Exception file_e)
  39. {
  40. //System.out.println(file_e);
  41. }
  42. }
  43.  
  44.  

En cambio, si hago esto:
Código
  1.  
  2. String[] frutas = {"pera","manzana","melon","ciruela"};
  3.  
  4. Arrays.sort(frutas);
  5.  
  6. for(String f:frutas)
  7. {
  8. System.out.println(f);
  9. }
  10.  
  11.  

Sí funciona, es la misma idea, pero en uno no sirve y en otro sí.
¿Alguien sabe cómo podría arreglar el problema? (ya he googleado y no doy con la solución).

PD: Cuando obtengo los datos del archivo es todo correcto, por lo cual, por ahí no va el problema.
Salu2!


« Última modificación: 17 Febrero 2015, 05:10 am por GenR_18 » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Ordenar elementos de JCombobox
« Respuesta #1 en: 16 Febrero 2015, 23:04 pm »

Trabaja con listas en lugar de arrays, así no tienes que controlar el índice. Prueba el siguiente código:

Código
  1. public void fillComboBox(JComboBox cboCities) {
  2.  
  3.   BufferedReader br = null;
  4.   List<String> cities;
  5.  
  6.   try {
  7.      br = new BufferedReader(new FileReader("ruta/al/archivo"));
  8.      cities = new ArrayList<>();
  9.  
  10.      String line;
  11.      while((line=br.readLine())!=null) {
  12.         StringTokenizer tokenizer = new StringTokenizer(line, "-");
  13.         while(tokenizer.hasMoreTokens()) {
  14.            cities.add(tokenizer.nextToken());
  15.         }
  16.      }
  17.      // sort cities list
  18.      Collections.sort(cities);
  19.   }
  20.   catch(FileNotFoundException fnfe){
  21.      fnfe.printStackTrace();
  22.      throw new RuntimeException("Archivo no encontrado");
  23.   }catch(IOException ioe) {
  24.      ioe.printStackTrace();
  25.      throw new RuntimeException("Error en la lectura del archivo");
  26.   }
  27.  
  28.   // put cities list in combo
  29.   final DefaultComboBoxModel cboModelCities = new DefaultComboBoxModel();
  30.   cboCities.setModel(cboModelCities);
  31.   cboModelCities.addElement(cities);
  32.  
  33. }


« Última modificación: 16 Febrero 2015, 23:06 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
GenR_18

Desconectado Desconectado

Mensajes: 115


Ver Perfil
Re: Ordenar elementos de JCombobox
« Respuesta #2 en: 17 Febrero 2015, 00:36 am »

Muy bien, muchas gracias! le he hecho algunas modificaciones y me ha funcionado correctamente, les paso el código por si a alguien le sirve.

Código
  1. JFileChooser chooser = new JFileChooser();
  2. chooser.showOpenDialog(chooser); // chooser o new JFrame()
  3. File fileXML = chooser.getSelectedFile(); // guardamos el archivo en el objeto fileXML
  4. String path = fileXML.getAbsolutePath(); // ubicacion del archivo
  5.  
  6. try
  7. {
  8. FileInputStream archivo = new FileInputStream(path);
  9. DataInputStream entrada = new DataInputStream(archivo);
  10. BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
  11. cities = new ArrayList<String>();
  12. cities_dest = new ArrayList<String>();
  13.  
  14. String lineas;
  15.  
  16. while((lineas = buffer.readLine()) != null)
  17. {
  18. StringTokenizer st = new StringTokenizer(lineas,"-");
  19. //cities = new ArrayList<String>();
  20. //cities_dest = new ArrayList<String>();
  21.  
  22. while(st.hasMoreTokens())
  23. {
  24. cities.add(st.nextToken());
  25. cities_dest.add(st.nextToken());
  26. i++;
  27. }
  28. }
  29.  
  30. Collections.sort(cities);
  31. Collections.sort(cities_dest);
  32.  
  33. entrada.close();
  34.  
  35. }
  36. catch(FileNotFoundException fnfe){
  37.      fnfe.printStackTrace();
  38.      throw new RuntimeException("Archivo no encontrado");
  39. }
  40. catch(IOException ioe)
  41. {
  42.      ioe.printStackTrace();
  43.      throw new RuntimeException("Error en la lectura del archivo");
  44. }
  45.  
  46. }
  47.  

Las declaraciones las puse globales, ya que las ocupo en otras partes del programa:
Código
  1. ArrayList <String> cities;
  2. ArrayList <String> cities_dest;
  3.  

Gracias por la ayuda!.
Salu2
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Ordenar elementos de JCombobox
« Respuesta #3 en: 17 Febrero 2015, 00:46 am »

Si tienes 1 minuto, edita el título del tema así, para indicar que se ha resuelto la duda:


Respecto a las variables globales, no existen. Solo hay variables locales, de referencia y de clase. Las variables locales son las que solo viven en un determinado ámbito, como en los métodos. Las variables de referencia son variables que son accesibles a través de instancias de la clase que describe la variable, por último, las variables de clase son variables estáticas a las cuales se accede por el nombre de la clase, seguido del nombre de la variable, como por ejemplo: Math.PI (PI es una variable de clase, es una constante a la cual accedemos directamente por medio de la clase).

Las operaciones debes de hacerlas dentro de un método y allí creas variables que solo van a vivir mientras dure la ejecución del método. Si declaras variables innecesarias como variables de referencia, solo estás mal gastando memoria.

EDIT: Ya vi tu actualización, y está bien que coloques esas variables como de referencia si se van a utilizar en varios procesos.

Un salu2.
« Última modificación: 17 Febrero 2015, 00:51 am por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
GenR_18

Desconectado Desconectado

Mensajes: 115


Ver Perfil
Re: Ordenar elementos de JCombobox
« Respuesta #4 en: 17 Febrero 2015, 05:12 am »

Si tienes 1 minuto, edita el título del tema así, para indicar que se ha resuelto la duda:


Respecto a las variables globales, no existen. Solo hay variables locales, de referencia y de clase. Las variables locales son las que solo viven en un determinado ámbito, como en los métodos. Las variables de referencia son variables que son accesibles a través de instancias de la clase que describe la variable, por último, las variables de clase son variables estáticas a las cuales se accede por el nombre de la clase, seguido del nombre de la variable, como por ejemplo: Math.PI (PI es una variable de clase, es una constante a la cual accedemos directamente por medio de la clase).

Las operaciones debes de hacerlas dentro de un método y allí creas variables que solo van a vivir mientras dure la ejecución del método. Si declaras variables innecesarias como variables de referencia, solo estás mal gastando memoria.

EDIT: Ya vi tu actualización, y está bien que coloques esas variables como de referencia si se van a utilizar en varios procesos.

Un salu2.

Estoy un poquito acostumbrado a otros lenguajes de programación, así que se me van algunos tecnicismos jeje.
De nuevo, gracias por la ayuda.
Salu2!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines