[英]JAVA GWT change widget color on click
我有一个自定义类,它扩展了Composite,它扩展了widget。 我添加了一个domHandler来处理ClickEvents。 目前,我将点击颜色设置为蓝色。 该小部件属于一个面板,其中包含许多与此同时的小部件(TripEventItem)。 我希望在单击其他窗口小部件时将颜色更改回黑色文本。 任何想法如何做到这一点?
final TripEventItem item = new TripEventItem(results.get(i), tripNumber);
tripNumber++;
item.addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
finalResults.get(item.getTripId() - 1);
List<LocationEvent> events = item.getTripEvent();
listener.displayResults(new ArrayList(events));
item.getElement().getStyle().setColor("blue");
}
}, ClickEvent.getType());
单击某个项目后,在处理程序中您将无法知道其他项目的状态。 您可以将所有项目保留在列表中。 然后迭代此列表并放置您的dom处理程序。 您的onClick
必须迭代此列表并恢复颜色。 然后,对于当前项目,应用由click事件引起的更改。
一个大概的例子就是这样
final List<TripEventItem> items = new ArrayList<>();
for(int i = 0; i < results.size(); i++) {
final TripEventItem item = new TripEventItem(results.get(i), tripNumber);
items.add(item);
}
for(int i = 0; i < items.size(); i++) {
final TripEventItem item = items.get(i);
item.addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for(int i = 0; i < items.size(); i++) {
TripEventItem otherItem = items.get(i);
restore(otherItem);
}
item.getElement().getStyle().setColor("blue");
}
}, ClickEvent.getType());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.