如果我尝试运行 for 循环直到 10,它会继续打印相同的标签 10 次。如果我改变直到 function.size ,它将打印函数次数。 颜色仅在相同标签内发生变化,不会影响其他标签。 我有变量是要打印在标签上的字符串,我应该如何将字符串分配给 ArrayList? 最终列表标签 = new ArrayList();
for(int k = 0; k <=1; k++) {
final Label label = new Label(FDTO.getFunctionName());
// final Label functionLabel = new Label(FDTO.getFunctionName());
label.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
for(Label otherLabel : labels)
otherLabel.getElement().getStyle().setColor("black");
// functionLabel.getElement().getStyle().setColor("red");
label.getElement().getStyle().setColor("red");
checkChild(FDTO.getFunctionCode(), functions, qaDTO, val);
}
});
labels.add(label);
childPanel.add(label);
}
最佳答案
在您的 ClickHandler
中,您只需将所有其他标签的颜色设置回默认值(黑色?)。
otherLabel.getElement().getStyle().setColor("black");
如果有许多其他标签,您应该考虑将它们保存在列表
中。请尝试这个小例子:
final List<Label> labels = new ArrayList<Label>();
for(int i = 0; i < 10; i++) {
final Label label = new Label("Hello " + i);
label.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// change all labels color back to default
for(Label otherLabel : labels)
otherLabel.getElement().getStyle().setColor("black");
// change current label color
label.getElement().getStyle().setColor("red");
}
});
// add to list
labels.add(label);
RootPanel.get().add(label);
}
关于java - 如何更改点击时的标签颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56873781/