2011-05-13 9 views
7

En GWT, estoy usando CellTable.¿Cómo se cambia el mouse sobre el resaltado?

Cuando pasa el mouse sobre la celda, resalta cada fila.

¿Cómo se puede cambiar el comportamiento del resaltado desde el mouse? Específicamente:

  • cambiar el color del destacando
  • desactivar/activar
  • hacen resaltar sólo el elemento de la cuadrícula específica en el cursor (en lugar de toda la fila)

(El truco actual que tengo es crear un montón de CellTables de 1 columna de ancho y agregarlas a un diseño VerticalPanel ... creando la ilusión de que hay una CellTable y resalta cada cuadrícula de acuerdo con su cursor. ¿Es esto malo? ¿Por qué? rendimiento?)

Respuesta

17

Usted notará el CellTable utiliza un ResourceBundle, lo que significa que todos los estilos css consiguen ofuscado ... esto hace que sea más difícil para anular estilos.

El constructor CellTable realmente le permitirá anular el ResourceBundle predeterminado. Entonces, primero debe crear su propio paquete de recursos de la siguiente manera:

public interface CellTableResources extends Resources { 

     public CellTableResources INSTANCE = 
       GWT.create(CellTableResources.class); 

     /** 
     * The styles used in this widget. 
     */ 
     @Source("CellTable.css") 
     CellTable.Style cellTableStyle(); 
} 

Luego debe crear su propio archivo CSS. Recomiendo copiar el estilo CellTable directamente en su proyecto y usarlo como punto de partida.Lo puedes encontrar aquí: http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/cellview/client/CellTable.css

Asegúrese de que el estilo se inyecta primero, y luego sólo alimentar en el constructor de la CellTable así:

CellTableResources.INSTANCE.cellTableStyle().ensureInjected(); 
    myCellTable = new CellTable<T>(Integer.MAX_VALUE,CellTableResources.INSTANCE); 

En concreto, tendrá que ajustar estos estilos :

  • cellTableKeyboardSelectedRow
  • cellTableKeyboardSelectedRowCell
  • c ellTableSelectedRow
  • cellTableSelectedRowCell
  • cellTableKeyboardSelectedCell

Es importante tener en cuenta que la tabla de celdas diferencia entre la 'fila seleccionada' y el 'teclado seleccionada fila'. La fila seleccionada es la fila real seleccionada (es decir, a través de SelectionModel). La fila seleccionada del teclado se refiere a lo que se resalta cuando el usuario está presionando la tecla arriba/abajo, pero no significa que la fila realmente está seleccionada (si tiene sentido).

+1

Una aclaración, recomendaría copiar el estilo de CellTableBasic.css y usarlo como su referencia: http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com /google/gwt/user/cellview/client/CellTableBasic.css ... la hoja de estilos estándar de CellTable.css incluye recursos de imágenes, el CellTableBasic.css es CSS puro y probablemente más fácil de modificar –

+1

+1 para su último párrafo donde explica el diferencia entre 'fila seleccionada' y la 'fila seleccionada del teclado'. esa es la primera vez que lo veo explicado – Justin

+0

¿Cómo ayuda esto a eliminar el realce realzado? Traté de sobreescribir todos los estilos mencionados (incluidos los no mencionados 'cellTableHoveredRow' y' cellTableHoveredRowCell'), pero no puedo hacer que el resaltado desaparezca por completo. Puedo cambiarlo un poco para que se vea diferente, pero no puedo eliminarlo. ¿Quizás alguien podría compartir el CSS real para eliminar el resaltado en el mouse sobre las filas? Gracias. – joscarsson

1
  1. CellTable puede ser de estilo a través de CSS: How do I style a gwt 2.1 CellTables headers?

  2. Para desactivar el resaltado acaba de establecer la propiedad CSS vuelo estacionario a nada.

  3. Posiblemente, intente ajustar .cellTableSelectedRow y .cellTableSelectedRowCell.

Aquí es el CellTable.css el original: http://www.google.com/codesearch/p?hl=en#A1edwVHBClQ/user/src/com/google/gwt/user/cellview/client/CellTable.css&q=cellTableLastColumn&d=8

+0

¿Podría por favor proporcionar algunos detalles sobre cómo hacer el número 2 en su lista, "simplemente establezca la propiedad de hover CSS a cero"? ¿Dónde configuro esa propiedad, en qué clase de CSS, etc.? Gracias. – joscarsson

4

voy a añadir para el número 2) en su lista, sólo tiene que hacer

cellList.setSkipRowHoverStyleUpdate(true) 

que inhabilita por completo destacando. También hay dos más setSkip -funciones en CellList relacionadas con el vuelo estacionario.

Cuestiones relacionadas