2012-07-10 39 views
8

En una aplicación de escritorio de Java con interfaz gráfica de usuario basada en SWT, tenemos una tabla en la que algunas filas deben abarcar varias columnas. Esto se resolvió con el enfoque que se muestra en este SWT oficial Snippet: Snippet239.javaSWT: tabla con celdas que abarcan columnas

Sin embargo, mucho más tarde se descubrió que hay un problema importante con este enfoque en Ubuntu con el tema Ambiance/Radiance predeterminado: siempre hay líneas verticales entre columnas, incluso para celdas que abarcan varias columnas. Esto se muestra en las siguientes capturas de pantalla:

Ubuntu with Ambiance/Radiance theme

Ubuntu with Clearlooks theme

Como se puede ver, en la primera pantalla hay una línea vertical entre la Columna 1 y Columna 2. ¿Alguien tiene una idea de cómo llegar deshacerse de estas líneas?

Ya hemos intentado lo siguiente:

  • Table.setLinesVisible(false): No funciona, las líneas verticales no desaparecen.
  • Utilice proveedores de etiquetas basados ​​en el propietario para dibujar sobre esas líneas verticales: no funciona, las líneas verticales parecen dibujarse encima de todo lo que dibujan los proveedores de etiquetas.
  • Adjuntar listener de pintura a la tabla para dibujar sobre las líneas verticales: no funciona, porque hay muchas fallas cuando la tabla se desplaza o se actualiza de otra manera.
  • El Nebula project tiene un widget Cuadrícula donde las celdas pueden abarcar varias columnas, y no tiene problema con las líneas verticales, porque toda la tabla se dibuja de forma no nativa. Sin embargo, no podemos justificar el esfuerzo de reemplazar nuestra tabla con un widget de cuadrícula solo para corregir el problema de líneas verticales en una plataforma en particular con ciertos temas. Además, el widget Grid parece ser una versión alfa previa a la publicación.

En base a las cosas que ya hemos probado, supongo que la única forma que queda es hurgar en las partes internas de SWT específicas de la plataforma, pero ni siquiera sé por dónde empezar con algo así.

+3

Suena como este error https://bugs.eclipse.org/bugs/show_bug.cgi?id=138909 que no parece tener mucho movimiento en él. Una cosa que debes hacer, además de buscar soluciones alternativas, es solucionar este error. – katsharp

+0

¿Es este el mismo método que usaste setLinesVisible? table.setShowGrid (falso); – Logan

+0

@Logan: El widget de la tabla SWT no tiene un método setShowGrid, AFAIK. ¿Quizás te refieres a la JTable de Swing? –

Respuesta

0

Hemos resuelto este problema utilizando un Table con una única columna de dibujo de propietario que emula varias columnas.

Cuestiones relacionadas