簡體   English   中英

JAVA GWT單擊更改小部件顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM