0

私はGWTを初めて使用し、Eclipseで実行されているいくつかの例を通してGWTを学んでいました. これらのプログラムの 1 つでボタンを追加setStyleName(class)し (これも で確認setStylePrimaryName())、addStyleName(class) を使用してもう 1 つのスタイルを追加しました。

私が期待したのは、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")(AssetStyleName()は既存のセカンダリ スタイルを削除します)。getStylePrimaryName()と を使用して、プライマリ スタイル名とその他の値も確認しました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 に答える