有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA GWT在单击时更改小部件颜色

我有一个自定义类,它扩展了组合,扩展了小部件。我添加了一个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());

共 (1) 个答案

  1. # 1 楼答案

    单击某个项目时,在处理程序中,您无法知道其他项目的状态。您可以将所有项目保留在列表中。然后迭代此列表并放置dom处理程序。必须迭代此列表并恢复颜色。然后对当前项目应用由单击事件引起的更改

    一个粗略的例子是这样的

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