Java 在vaadin上使用css?

Java 在vaadin上使用css?,java,vaadin,vaadin7,Java,Vaadin,Vaadin7,我正在阅读《瓦丁之书》的第8章,我无法理解如何为每个组件定义css样式。我在styles.scs上做了自定义,但是所有的自定义都转到了所有组件,我不想这样 范例 HorizontalLayout hLayout = new HorizontalLayout(); HorizontalLayout hMainLayout = new HorizontalLayout(); 我希望hLayout有一个背景图像,hMainLayout没有 我试过了,但没用 .v-horizontallayout-h

我正在阅读《瓦丁之书》的第8章,我无法理解如何为每个组件定义css样式。我在styles.scs上做了自定义,但是所有的自定义都转到了所有组件,我不想这样

范例

HorizontalLayout hLayout = new HorizontalLayout();
HorizontalLayout hMainLayout = new HorizontalLayout();
我希望hLayout有一个背景图像,hMainLayout没有

我试过了,但没用

.v-horizontallayout-hLayout {
     background:url("myimage.jpg");
}

.v-horizontallayout-hMainLayout {
     background: none;
}

有什么想法吗?

Vaadin没有基于java变量名定义样式

可以使用将自定义样式名称应用于构件:

HorizontalLayout hLayout = new HorizontalLayout();
hLayout.setStyleName("hLayout");

然后您可以匹配样式
v-horizontallayout-hLayout

我想在用户的默认区域设置中添加一些内容回答:

还有一个名为
addStyleName(String)
的方法,在某些情况下更好,尤其是当您不想替换任何以前的用户定义样式时

顺便说一句: 您可以使用
setStyleName(String)
/
addStyleName(String)
应用多个样式,方法如下:

hLayout.setStyleName("aLayout bLayout cLayout"); // replaces any previous styles
hLayout.addStyleName("dLayout eLayout fLayout"); // add styles without any replacement