Новый GWT 2.4 DataGrid - не стилизация - ошибка аннотации? - PullRequest
0 голосов
/ 09 сентября 2011

Я следовал примеру кода, изложенному в более ранней публикации , касающейся стилизации GWT CellTables, тиражирования кода для новых GWT 2.4 DataGrids. К сожалению, ничего не получалось. Все, что я хочу сделать, это установить меньший размер шрифта для ячеек, поэтому в моем локальном файле CSS (см. Второй параметр аннотации @Source в связанном посте) я включил:

.dataGridCell {
    font-size: 6px;
}

Ничего не случилось. Размер шрифта упорно не изменить. Затем я заметил это в коде DataGrid:

  @ImportedWithPrefix("gwt-CellTable")
  public interface Style extends CssResource {

Я скопировал DataGrid в свою рабочую область вместе со связанными тремя gif-файлами и прокомментировал одну зависимость от защищенного метода в AbstractCellTable (нет пустых виджетов таблицы - ну да ладно). Я изменил префикс, определенный в аннотации, на gwt- DataGrid - и pfffft! - все равно это не сработало.

Так чего мне здесь не хватает? Это правильный префикс gwt-CellTable в аннотации? Мне это кажется подозрительным, хотя мне не удалось заставить его работать с моим изменением.


Оказывается, имена имеют значение. Duh!

ОК, все заработало. Оказывается, важно использовать одни и те же имена. Duh!

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.DataGrid.Style;
import com.google.gwt.user.cellview.client.DataGrid.Resources;

public interface MyDataGridResources extends Resources {

  public static final MyDataGridResources INSTANCE = GWT.create(MyDataGridResources.class);

  @Override
  @Source({DataGrid.Style.DEFAULT_CSS, "../resources/styling/mydatagridstyles.css"})
  Style dataGridStyle();  // ***********************

}

Когда я сделал имя стиля таким же, как имя интерфейса стиля в DataGrid.java ("dataGridStyle"), он начал работать.

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

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Я только что сделал это, как описано в посте , на который вы ссылаетесь , и он работает как положено. Мой класс Resources выглядит так:

import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.DataGrid.Resources;

public interface CustomDataGridResources extends Resources {

    @Source({DataGrid.Style.DEFAULT_CSS, "../resources/customDataGrid.css"})
    CustomStyle dataGridStyle();

    interface CustomStyle extends DataGrid.Style {

    }

}

А затем используйте этот класс при создании экземпляра DataGrid:

    DataGrid.Resources resources = GWT.create(CustomDataGridResources.class);
    gridUnits = new DataGrid<Unit>(50, resources, new UnitKeyProvider());
1 голос
/ 02 февраля 2012

будьте осторожны при использовании строки

@Source({DataGrid.Style.DEFAULT_CSS, "../resources/customDataGrid.css"})

, это означает, что gwt использует как CSS по умолчанию, так и ваш собственный.я знаю, что это закодировано так, но когда вы используете копирование и вставку, вы можете запутаться, как я, почему у вас есть оба стиля вместе.

1 голос
/ 14 сентября 2011

Когда вы перезаписываете стиль, который устанавливается CSS-файлом GWT, вам нужно добавить «! Important» в ваше собственное определение CSS.Как это:

.dataGridCell {
    font-size: 6px !important;
}
.dataGridEvenRow {
    background: #ff0000 !important;
}
...