#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.