简体   繁体   English

JAVA GWT单击更改小部件颜色

[英]JAVA GWT change widget color on click

I have a custom class which extends Composite which extends widget. 我有一个自定义类,它扩展了Composite,它扩展了widget。 I have added a domHandler to handle ClickEvents. 我添加了一个domHandler来处理ClickEvents。 Currently I am setting the color to blue on click. 目前,我将点击颜色设置为蓝色。 The widget belongs to a panel which contains many of this same time of widget (TripEventItem). 该小部件属于一个面板,其中包含许多与此同时的小部件(TripEventItem)。 I want the color to change back to black text when a different widget is clicked on. 我希望在单击其他窗口小部件时将颜色更改回黑色文本。 Any idea how to do this? 任何想法如何做到这一点?

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());

When an item is clicked, in your handler you can't know the state of the other items. 单击某个项目后,在处理程序中您将无法知道其他项目的状态。 You can keep all the items in a list. 您可以将所有项目保留在列表中。 Then iterate this list and place your dom handlers. 然后迭代此列表并放置您的dom处理程序。 You onClick must iterate this list and restore the color. 您的onClick必须迭代此列表并恢复颜色。 Then for the current item you apply the changes caused by the click event. 然后,对于当前项目,应用由click事件引起的更改。

A rough example would be something like this 一个大概的例子就是这样

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM