Leer de fichero y escribirlo en pantalla
Necesito leer un archivo que tiene varias lineas. Necesito para cada palabra poner un par de JCheckBox y para cada párrafo un par de JRadioButton.
A la hora de leer el fichero con:
BufferedReader br = new BufferedReader(new FileReader(filename));
puedo leer una linea del fichero de esta manera:
String str = br.readLine();
pero como puedo después dividirlo en palabras?
Yo había hecho lo siguiente:
String words[] = str.split(" ");
y después con un bucle for le ponía las JLabels para mostrar la palabra con las dos JCheckBox.
JLabel jlbl = new JLabel(words[i]);
jlbl.setVisible(true);
JCheckBox jcbx1 = new JCheckBox();
jcbx1.setVisible(true);
JCheckBox jcbx2 = new JCheckBox();
jcbx2.setVisible(true);
Bueno, la cosa es que no funciona...He empezado a programar en Java por obligación, y no llevo ni 3 semanas. A ver si me podeis ayudar...(No seais muy duros conmigo, que reconozco que soy un burro jeje)
A la hora de leer el fichero con:
BufferedReader br = new BufferedReader(new FileReader(filename));
puedo leer una linea del fichero de esta manera:
String str = br.readLine();
pero como puedo después dividirlo en palabras?
Yo había hecho lo siguiente:
String words[] = str.split(" ");
y después con un bucle for le ponía las JLabels para mostrar la palabra con las dos JCheckBox.
JLabel jlbl = new JLabel(words[i]);
jlbl.setVisible(true);
JCheckBox jcbx1 = new JCheckBox();
jcbx1.setVisible(true);
JCheckBox jcbx2 = new JCheckBox();
jcbx2.setVisible(true);
Bueno, la cosa es que no funciona...He empezado a programar en Java por obligación, y no llevo ni 3 semanas. A ver si me podeis ayudar...(No seais muy duros conmigo, que reconozco que soy un burro jeje)
Te recomuiendo utilizar stringTokenizer, es muy sencillo, tienes una cadena
donde recuperaste toda la información, y quieres separarla entonces:
String Datos....
String Separador=new String(\\\\\\\\\\\\\\\"|\\\\\\\\\\\\\\\"); //Por dar un ejemplo
StringTokenizer ST = new StringTokenizer(Datos,Separador);
int Tokens = ST.countTokens();
for(int i=0;i<Tokens;i++)
System.out.prinln(ST.nextToken());
Pero ten cuidado que los tokens se utilicen solo para separar y no sean
parte de la información
donde recuperaste toda la información, y quieres separarla entonces:
String Datos....
String Separador=new String(\\\\\\\\\\\\\\\"|\\\\\\\\\\\\\\\"); //Por dar un ejemplo
StringTokenizer ST = new StringTokenizer(Datos,Separador);
int Tokens = ST.countTokens();
for(int i=0;i<Tokens;i++)
System.out.prinln(ST.nextToken());
Pero ten cuidado que los tokens se utilicen solo para separar y no sean
parte de la información
Muchas gracias, ya lo había probado tal y como tu lo has puesto, jeje.
Ahora la cosa está en que he separado las palabras por espacios, pero también me gustaría detectar los cambios de párrafos. En mi fichero, cada linea es un párrafo. Podría anidar dos StringTokenizer sin problemas, verdad? un sería para StringTokenizer(datos," "); y el otro StringTokenizer(datos,"\n); no?
Lo que pasa es que al usar la primera sentencía, no diferencia los saltos de linea (he puesto en un while que me lea todo hasta que datos.readLine != null).
Alguna idea para poder detectar cuando me ha acabado la linea?
Ahora la cosa está en que he separado las palabras por espacios, pero también me gustaría detectar los cambios de párrafos. En mi fichero, cada linea es un párrafo. Podría anidar dos StringTokenizer sin problemas, verdad? un sería para StringTokenizer(datos," "); y el otro StringTokenizer(datos,"\n); no?
Lo que pasa es que al usar la primera sentencía, no diferencia los saltos de linea (he puesto en un while que me lea todo hasta que datos.readLine != null).
Alguna idea para poder detectar cuando me ha acabado la linea?
comento mas cosas. Usando el método split, me salen una burrada de excepciones, concretamente 29...He leido algo sobre las clases StringTokenizer y StreamTokenizer, pero no sabría cual de ellas utilizar ni como hacerlo.
También decir que el fichero lo tengo que mostrar en un JFrame, yo había pensado en JLabels pero no sé si habrá algo mejor para mostrar cada palabra junto con sus checkbox.
Tampoco sé muy bien como saltar de linea. Podría hacer un método para hacerlo, pero seguro que tiene que haber alguna función que lea ficheros linea a linea, detectando cuando acabe cada linea, no?
A ver si me comentais algo. Gracias
También decir que el fichero lo tengo que mostrar en un JFrame, yo había pensado en JLabels pero no sé si habrá algo mejor para mostrar cada palabra junto con sus checkbox.
Tampoco sé muy bien como saltar de linea. Podría hacer un método para hacerlo, pero seguro que tiene que haber alguna función que lea ficheros linea a linea, detectando cuando acabe cada linea, no?
A ver si me comentais algo. Gracias