0

我是 GWT 的新手,正在通过在 Eclipse 中运行的一些示例来学习它。在其中一个按钮的程序中,我添加了setStyleName(class)(也用 选中setStylePrimaryName())并使用 addStyleName(class) 添加了另一种样式。

我所期望的是该按钮应该显示使用setStyleName()/setStylePrimaryname 设置的css 类属性,因为这将是primaryStylename。

但令我惊讶的是,如果我使用 向按钮添加另一种样式addStyleName(),则该样式将成为按钮的样式,尽管它是其辅助样式名称!在这种情况下,为了表达主要样式名称,我必须使用添加辅助样式名称addStyleDependentName()

我的代码设置样式如下。

final Button sendButton=new Button("Send");
final TextBox nameField=new TextBox();

sendButton.setStylePrimaryName("newButton");
sendButton.addStyleName("secondButton");

在css文件中

 .newButton{
    display:block;
    font-size: 16pt;
    color: black;
    background-color: maroon;
}
.secondButton{
    color:blue;
    margin: 15px 10px 10px;
    background-color: olive;

}

该按钮始终以橄榄色背景颜色出现,除非将其添加为 addStyleDependentName("secondButton") 和

案例 2:在使用时addStyleName("secondButton")然后setStyleName("newButton")(因为setStyleName()将删除现有的辅助样式)。我还使用getStylePrimaryName()and检查了主要样式名称和其他样式的值getStyleName()

getStylePrimaryName() 给出“newButton”,getStyleName() 给出 newButton,secondButton....所以即使有一个主要样式名称,为什么它总是显示通过 addStyleName() 添加的辅助样式属性(这里是 secondButton)?

*请注意:我已经在如下文本框上尝试了这个,它按预期表达了主要样式下提到的颜色*

final TextBox nameField=new TextBox();
nameField.setText("---Enter Name Here---");
nameField.setStylePrimaryName("textStyle");
nameField.addStyleName("myText");
nameField.addStyleName("bigText");

CSS如下

.myText{
    color:blue;
}

.bigText{
    font-size: large;
}
.textStyle{
    color:maroon;
    text-shadow: aqua;

}

需要注意的一点是,除非我们不将辅助样式添加为 addStyleDependentName(),否则属性将按照 CSS 中类名出现的顺序显示...也就是说,如果主要样式名称定义在辅助样式之后,则主要得到显示,否则次要的......可以注意到改变CSS中定义类的顺序所以在我的按钮属性中,当我将顺序更改为

.secondButton{
    color:blue;
    margin: 15px 10px 10px;
    background-color: olive;

}

 .newButton{
    display:block;
    font-size: 16pt;
    color: black;
    background-color: maroon;
}

按钮颜色越来越像栗色。如果将次要样式添加为 addStyleDependentName(),则主要样式的表达与 CSS 中的顺序无关

4

2 回答 2

1

根据文档:

Adds a secondary or dependent style name to this object. 

设置后,或setStyleName()addStyleName ()将添加另一个,您通过setStylePrimaryName()styleargument

于 2013-03-05T13:38:19.423 回答
0

样式主名称是添加后缀的一个样式相关名称。否则它只是一个样式名称,并且适用 CSS 规则(GWT 对此无能为力,最终在浏览器中只是 HTML+CSS+JS)

于 2013-03-05T13:19:47.517 回答