Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Diciembre 01, 2008, 11:51:02
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Nuevo foro de Control de versiones.

+  Foros Java y C/Linux
|-+  Programación
| |-+  Java J2SE
| | |-+  Celdas de un JTable
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: Celdas de un JTable  (Leído 111 veces)
Joy
Newbie
*
Mensajes: 9


Ver Perfil


« en: Agosto 26, 2008, 11:44:20 »

Hola!

Tengo una JTable que muestra el resultado de una consulta sobre una base de datos. El problema es que el texto es algo grande y no se muestra por completo.

He intentado dos alternativas. Lo primero aumentar el tamaño de la celda con setRowHeight, sin embargo el texto se muestra pero en el centro de la celda, on lo que se leen las primeras lineas, pero no lo que sigue.

Por otro lado el texto lo estoy mostrando como: setText("<html>+consulta+<html>") y de esta forma evito que lo muestre en una sola linea, sin embargo da lo mismo.

Espero que puedan ayudarme... Gracias por adelantado.

Saludos.
En línea
Joy
Newbie
*
Mensajes: 9


Ver Perfil
« Respuesta #1 en: Agosto 26, 2008, 11:51:34 »

Aca esta una imagen para ilustrar mejor el problema..
http://img515.imageshack.us/my.php?image=jtablekc5.png

He de decir que la tabla la construyo dinamicamente, ya tengo un tableModel y a su vez un TableRenderer con el que intente aplicarle estilo a la primera columna..

Saludos
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #2 en: Agosto 27, 2008, 09:21:07 »

Hola:

Con <html> para el texto tendrías que poner tú los <br> donde quieras, no los pone él automáticamente.

No se me ocurre una solución sencilla para partir el texto. O bien en tu TableCellRender haces el código necesario para metero los <br> donde haga falta, o bien puedes probar con setAutoRresizeMode(). Con este último, si lo llamas cuando los datos ya están en la tabla, quizás consigas que las columnas se hagan lo suficientemente anchas como para que quepa todo el texto, pero no que se partan en dos.

Se bueno.
En línea

Joy
Newbie
*
Mensajes: 9


Ver Perfil
« Respuesta #3 en: Agosto 27, 2008, 05:41:32 »

Hola!..

Primero que nada gracias por responder..

Colocarle etiquetas <br> seria una buena alternativa, si tuviera una forma de poder separar el texto, el problema es que son parrafos variables y no se me ocurre con cual marca hacer split() y luego colocarle los <br>.

En cuanto al setAutoResizeMode(), arregla un poco el problema pero no del todo.

Sin embargo, el texto me sigue apareciendo centrado en la fila, aunque no creo que haya forma de cambiarle el "vertical alignment".

Saludos
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #4 en: Agosto 28, 2008, 09:04:47 »

Hola:

Para insertar <br> deberías buscar espacios y cuando encuentres un espacio situado en una posición justo antes de "ancho columna deseado", reemplazarlo por un <br>.

Lo del centrado, prueba en el TableCellRenderer, que supongo que usas un JLabel. Emplea los métodos de JLabel. No sé cual es el que hace lo que quieres, pero puedes probar con setVerticalTextPosition(), setVerticalAlignement(), e incluso haciendo que el JLabel pille un alto determinado con setPreferredSize()

Se bueno.
En línea

Joy
Newbie
*
Mensajes: 9


Ver Perfil
« Respuesta #5 en: Agosto 28, 2008, 04:44:06 »

Hola!!..

Sonrisa sos un crack tio.. muchas gracias...

Con el metodo setVerticalAlignment() del JPanel logre arreglar el problema que tenia y ya aparece como debe ser.

La solucion queda asi, para cualquiera con el mismo problema:

el metodo del TableCellRenderer
Citar
@Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
       
        javax.swing.JLabel etiqueta = new javax.swing.JLabel();
        etiqueta.setVerticalAlignment(javax.swing.JLabel.TOP);
               
        if(value instanceof String)
            etiqueta.setText((String)value);
       
        return etiqueta;
       
    }

Y en el metodo donde configuro la tabla ajusto el tamaño de la fila usando setRowHeight(value)

Muchas Gracias!

Saludos
En línea
Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!