GWT — стили неправильно выбраны из файла css

#gwt

#gwt

Вопрос:

Я сталкиваюсь с этой странной ситуацией с GWT, когда стили неправильно выбираются из файла CSS.

Я пытаюсь создать текстовую область. Я знаю, что он выбирает стили по умолчанию либо из clean.css, либо из standard.css.

Но я удалил строку inherit из application.gwt.xml файл и скопировал все эти стили в мой собственный пользовательский файл таблицы стилей — application.css

И я пытаюсь добавить это имя стиля («закрыть» см. Ниже) в мою текстовую область следующим образом

        TextArea ta = new TextArea();
       ta.addStylename("close");
 

Но он вообще не подбирает имя класса «close». У меня есть стили по умолчанию для текстовой области, скопированные в application.css из standard.css.
Я проверил страницу с помощью firebug и элемента проверки Chrome, я мог видеть, что элемент выглядит следующим образом —

    <textarea class="gwt-TextArea close"></textarea>
 

Я вижу, что стили выбираются только из class — gwt-TextArea.

может ли кто-нибудь помочь мне здесь.

 //// styles in application.css
          .close  {
       font-size:150%;
          }

          .gwt-TextArea {
            border: 1px solid #d9dbdb;
             background: #ffffff;
             color: #8e8e8e;
             font: Arial, sans-serif;
              overflow: auto;
           }
 

Комментарии:

1. Как вы включаете application.css?

2. Да …. другой стиль (.gwt-TextArea) выбран, но не стиль «закрыть». оба r в одном файле

Ответ №1:

То, что вы ищете, — это setStyleName() , который добавит имя стиля к объекту. После этого вы можете использовать .close { }, как вы используете сейчас.

Что делает addStyleName, так это создает другой стиль, который в данном случае зависит от основного имени стиля .gwt-TextArea close{ } (я не уверен в этом на 100%, документация не очень понятна).

В любом случае, хорошей привычкой является использование setStyleName() и setStylePrimaryName() .

кстати. если вам понравился ответ, пожалуйста, нажмите на кнопку в левой части сообщения, чтобы оно было помечено как ответ 🙂

Комментарии:

1. Спасибо за ответ… Мне действительно было интересно, в чем разница между setStylename и addStylename

Ответ №2:

В GWT стили по умолчанию запутаны, поэтому вы можете повторно использовать имена стилей в разных виджетах.

Для программного использования стилей необходимо использовать специальное сопоставление классов CSS: CssResource .

 interface MyCssResource extends CssResource {
  String myCssClass();
}

class MyResources extends ClientBundle {
  @Source("my.css")
  MyCssResource css();

  @Source("some.png")
  ImageResource imageAccessor();

  @Source("some.png")
  @ImageOptions(repeatStyle=RepeatStyle.Horizontal)
  ImageResource repeatingImage();
}
 

Затем вы используете этот clientbundle через отложенную привязку GWT.

Смотрите здесь для получения дополнительной информации: http://code.google.com/intl/fr-FR/webtoolkit/doc/latest/DevGuideClientBundle.html#CssResource

Комментарии:

1. Спасибо за ответ .. Я мог бы попробовать этот метод в будущем

Ответ №3:

Спасибо, ребята, за помощь. Но я выяснил, что в моем файле css была синтаксическая ошибка где-то в середине файла, и, следовательно, все стили, написанные под этой ошибкой, не были обнаружены. Это было сложно.. потому что я все время задавался вопросом, не делаю ли я что-то неправильно в том, как я обрабатываю стиль через GWT.