Как переопределить скрытый стиль GWT для заголовка DataGrid

Я пытаюсь выяснить, как переопределить стиль dataGridHeader, определенный вDataGrid.css! Ядро GWT. Имя стиля GWT скрыто с помощью adler32, поэтому я не могу просто использовать .dataGridHeader в моем css. В моем случае я хочу простую замену пустого пространства: нормально.

Я видел здесь некоторые статьи о введении CSS, но все они кажутся уровнем класса, а не подстилем, используемым в компоненте, таком как DataGrid.

Как переопределить стиль заголовка, используемый внутри компонента, такого как DataGrid?

Ответы на вопрос(2)

Просто чтобы читателям было легче ...

Создать новый интерфейс

public interface GwtCssDataGridResources extends DataGrid.Resources {
      @Source({Style.DEFAULT_CSS, "gwtDataGrid.css"})
      Style dataGrid();
}

Используйте статическую ссылку

public static final GwtCssDataGridResources gwtCssDataGridResources = GWT.create(GwtCssDataGridResources.class);

    static {
        gwtCssDataGridResources.dataGrid().ensureInjected();
    }

Наконец, создайте новый файл CSS gwtDataGrid.css. Обратите внимание, что если вам нужно переопределить стиль, вы должны использовать!important на каждом определении.

.dataGridHeader {
    color: #FF0000 !important;
}

.dataGridFirstColumnHeader {
    -moz-border-radius-topleft: 5px;
    -webkit-border-top-left-radius: 5px;
}

.dataGridLastColumnHeader {
    -moz-border-radius-topright: 5px;
    -webkit-border-top-right-radius: 5px;
}

Вот и все

Решение Вопроса

ClientBundle а такжеCssResource: создать интерфейс, который расширяетDatagrid.Resources и переопределяетdataGridStyle метод с@Source аннотация, указывающая на ваш собственный CSS-файл (или, возможно, как на исходный файл, так и на ваш собственный файл, так что они будут объединены вместе).

Выполнение этого таким образом переопределит стиль дляall DataGridхотя в вашем приложении (на самом деле это зависит от того, какойCssResource экземпляр получаетensureInjected() первый: тот, что из оригиналаDataGrid.Resources или один из вашего подчиненного интерфейса): потому что вы используете тот же тип возврата (DataGrid.Style), запутанные имена классов будут одинаковыми.

Если вы хотите изменить стиль в каждом конкретном случае, кроме того, объявите интерфейс, который расширяетDataGrid.Style и использовать это как тип возврата к вашемуdataGridStyle переопределить: поскольку имя обфусцированного класса основано как на полном имени интерфейса, так и на имени метода, вашDataGrid.Style субинтерфейс будет генерировать другие запутанные имена классов, чем исходныйDataGrid.Style интерфейс.

Тогда, конечно,GWT.create() вашDataGrid.Resources подчиненный интерфейс и передать его в качестве аргументаDataGrid конструктор.

Смотрите такжеhttp://code.google.com/p/google-web-toolkit/issues/detail?id=6144

 10 июл. 2012 г., 16:28
Немного об использовании другого стиля в каждом конкретном случае спасло меня. Спасибо :)
 Glenn04 июн. 2012 г., 21:07
Мне удалось получить ваше первое предложение для работы, но я не смог сделать это с оформлением гарантированного ввода. Любой порядок приведет к использованию оригинального CSS. Глядя на DataGrid.java, кажется, что он всегда использует собственный результат GWT.create. Передача его конструктору сработала. `открытый интерфейс MyResources extends DataGrid.Resources {@Source ({DataGrid.Style.DEFAULT_CSS, & quot; DataGrid.css & quot;}) DataGrid.Style dataGridStyle (); } static MyResources resources = GWT.create (MyResources.class); `

Ваш ответ на вопрос