Título: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 10 Octubre 2010, 18:02 pm Hola, estoy haciendo un visor de documentos de texto(sí lo sé, es una estupidez, pero quiero practicar un poco de componentes en Java, aparte que tengo cientos de libros en .txt y me sería útil).
Bueno, lo que hago para volcar todo al JTextArea es leer el archivo con un Scanner y en cada línea hacer un append al JTextArea, así: Código
Funciona bien, el problema es que el scroll se va hasta abajo(estamos hablando de unas 3000 líneas por archivo de texto), así que quisiera que aunque todo fuese volcado al JTextArea, el scroll quedará en la primera línea, ¿podrían decirme cómo? Otra cosa, quisiera un método Ir a, ¿hay algo que me permita ir a cierta línea en el JTextArea? Usé este método para obtener el número de línea(algo rústico, pero funciona): Código
Les dejo todo el código para que lo prueben, de antemano gracias. http://rapidshare.com/files/424244300/TextViewer.java (http://rapidshare.com/files/424244300/TextViewer.java) http://www.megaupload.com/?d=M5EZAF8X (http://www.megaupload.com/?d=M5EZAF8X) EDITO: He solucionado lo de poner el cursor en la primera línea así: Código: texto.setCaretPosition(0); Ahora me queda otra duda, estoy teniendo problemas al abrir archivos con espacios con el Scanner, ¿alguien sabe como resolverlo? Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 10 Octubre 2010, 23:03 pm Es raro no debería darte problemas ya que estas seteando el delimitador a \n mm de todas formas usas el nextLine().
El condicional ternario hace poco hay, si no haces linea.isEmpty() te contaría la linea en blanco. Hice este método que permite ir a una especifica. Código
Un saludo. Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 10 Octubre 2010, 23:48 pm Gracias, el único problema es que me pone la línea que quiero al final del JTextArea, tengo que corregir eso.
También me queda corregir que reciba nombres de archivos con espacios. Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 10 Octubre 2010, 23:58 pm No la coloca al final, la coloca al inicio
Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 11 Octubre 2010, 00:06 am Qué raro, he especificado que vaya a la línea 50 en un archivo que tiene miles de líneas y deja la línea al final del JTextArea.
Código
Saludos. EDITO: Al final queda así: (http://img87.imageshack.us/img87/3761/pantallazotextviewer.png) No quiero que los números de línea salgan en el texto, ¿alguna idea de qué componente usar para esto o cómo? Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 11 Octubre 2010, 22:07 pm Eso es mas complicado de lo que parece :xD , no sabria decirte la forma correcta de hacerlo...habria que chekear el src de jedit :P
Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 12 Octubre 2010, 01:35 am He encontrado esto, parece que funciona, voy a ver como lo adhiero al proyecto.
Código
Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 12 Octubre 2010, 01:52 am :D :D excelente, así que era dibujando a mi también me servirá ese ejemplo ;)
Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 12 Octubre 2010, 02:19 am Hola, LEYER, estoy teniendo muchos problemas para adaptar el código a mi proyecto, ¿podrías echarme una mano?
Te subo el proyecto entero por si deseas echarle un vistazo, yo mientras sigo intentando. http://www.megaupload.com/?d=1W8QBWFV (http://www.megaupload.com/?d=1W8QBWFV) EDITO: Encontré esto, pero no lo logro adaptar a mi código :( Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 12 Octubre 2010, 08:12 am No puedo editar ese code en netbeans :-\ por que hay que modificar ciertas cosas de la GUI. ahora bien te dire lo que tienes que hacer.
Donde vas a colocar el area de texto, hay vas a hacer un panel sin ningún componente agregado. Luego en el constructor harás lo siguiente. Le quitas el main a LineNr Código
Y ya con eso bastaría. Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 13 Octubre 2010, 02:06 am Gracias, no he podido echarlo a andar.
Mira, tengo lo siguiente. (http://img580.imageshack.us/img580/7779/pantallazoou.png) En el área libre debajo de donde dice "Archivo" agregué el panel vacio que me indicaste. Pero no te entiendo en cuál constructor hay que poner eso, porque solo tengo el constructor de la clase "TextViewer", ¿sería así?: Código
Ejecutando eso me queda: (http://img89.imageshack.us/img89/3963/pantallazo1zm.png) Ojalá puedas ayudarme, gracias. Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: Leyer en 13 Octubre 2010, 03:48 am :( Que raro yo lo probé asi y si funciona, ha de ser que no eliminaste el area de texto anterior que tenias, tienes que eliminarlo, y creas el panel hay, recuerda el pack(); si sigue sin funcionar sube el code de la ventana principal en pastebin para verla.
Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: leogtz en 13 Octubre 2010, 05:24 am No, definitivamente no. Será el acomodo de los componentes, o no sé, simplemente no he podido.
Código: http://pastebin.com/j4Rvnn62 Código: http://pastebin.com/yUjDnyQi Código: http://pastebin.com/eNMEaR3b Gracias, por todo. Título: Re: JTextArea Número de línea e Ir a línea específica Publicado por: 1mpuls0 en 25 Octubre 2010, 18:35 pm Hola Leo, disculpa por contestar hasta ahora.
Citar Qué raro, he especificado que vaya a la línea 50 en un archivo que tiene miles de líneas y deja la línea al final del JTextArea. Despues de abrir y cargar el texto haces Código
pero si quitas esa línea de código funciona bien xD, la línea que buscas aparece al inicio. Algo le falta al método ir. Citar No, definitivamente no. Será el acomodo de los componentes, o no sé, simplemente no he podido. Lo que hice fue crear 2 JPanel para organizarlo un poco. En el método paint, lo unico que hice fue cambiar el nombre de las variables el ejemplo que encontraste por las de tú programa, y además cambiar la posición en la que dibuja los numeros. http://www.4shared.com/file/1vbI6NV4/respaldo_visor_2.html Hay muchas cosas que se pueden mejorar. ;) Sigue así. Un saludo. |