Anscheinend sollte das sehr intuitiv sein, aber ich schaffe es nicht, es zum Laufen zu bringen. Wenn auf eine Schaltfläche geklickt wird, sollte ich ihren Stil ändern. Wenn ich erneut klicke, wird der Stil wieder auf den ursprünglichen Stil zurückgesetzt. Meine Vermutung wäre:
Code: Select all
@Override
public void buttonClick(ClickEvent event) {
Button b = event.getButton();
if (b == my_special_button){
if(!b.getStyleName().contains("x")){
b.addStyleName("x");
} else {
b.removeStyleName("x");
}
}
}
Könnten Sie mir einen Einblick geben?
BEARBEITEN: Ich korrigiere den Beispielcode hier wie vorgeschlagen (in meiner Klasse war er bereits wie vorgeschlagen, ich wusste aber nicht, dass es einen Unterschied macht, also danke!)
Beim Laden der Seite hat die Schaltfläche diese Klasse:
Code: Select all
v-button v-button-thumbs-up-button thumbs-up-button
Code: Select all
v-button v-button-thumbs-up-button thumbs-up-button v-button-active active
Es gibt zwei Probleme:
- Der „aktive“ Stil wird nicht auf die Schaltfläche angewendet, die Schaltfläche verschwindet!
- Wenn ich außerhalb der Schaltfläche klicke, wird die Schaltfläche erneut angezeigt, aber der Stil wird auf den nicht aktiven Stil zurückgesetzt. Der nicht aktive Stil funktioniert einwandfrei, daher wird das CSS von der Seite geladen.
Code: Select all
.thumbs-up-button{
background-image: url("../covercliptheme/img/thumbs_up_1x.png");
background-position: left top;
}
.thumbs-up-button .v-button-active .active{
background-image: url("../covercliptheme/img/thumbs_up_1x_green.png");
background-position: left top;
}
Ich denke, das Problem liegt in der Art und Weise, wie ich die Seite mit den Komponenten erstellt habe, und nicht in der onClick-Aktion selbst. Ich bin sehr neugierig, herauszufinden, was falsch läuft:) Die Schaltfläche ist Teil einer Komponente, die Teil anderer Komponenten ist, insbesondere wird die Komponente mit der Schaltfläche durch Folgendes dargestellt Klasse:
Code: Select all
public class CVRow extends CustomComponent implements Button.ClickListener{
@AutoGenerated
private AbsoluteLayout mainLayout;
@AutoGenerated
private HorizontalLayout horizontalLayout_1;
@AutoGenerated
private AbsoluteLayout absoluteLayout_2;
@AutoGenerated
private Button nativeButton_2;
@AutoGenerated
private Button nativeButton_1;
/**
* The constructor
*/
public CVRow() {
buildMainLayout();
setCompositionRoot(mainLayout);
nativeButton_1.addListener(this);
// TODO add user code here
}
@AutoGenerated
private AbsoluteLayout buildMainLayout() {
/* some layout code.. */
// add horizontalLayout_1
horizontalLayout_1 = buildHorizontalLayout_1();
mainLayout.addComponent(horizontalLayout_1, "top:0.0px;left:0.0px;");
return mainLayout;
}
@AutoGenerated
private HorizontalLayout buildHorizontalLayout_1() {
// some layout code... //
// add absoluteLayout_2
Mobile version