как изменить цвет метки при клике? - PullRequest
0 голосов
/ 03 июля 2019

Если я попытаюсь запустить цикл for до 10, он будет продолжать печатать одну и ту же этикетку 10 раз.и если я изменю до function.size и он напечатает количество раз функции.цвет меняется только внутри одних и тех же меток, не влияя на другие метки.У меня есть переменные строки, которые я печатаю на этикетке, как мне назначить строку в ArryList?окончательный список меток = новый 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);
        }

1 Ответ

0 голосов
/ 03 июля 2019

В вашем ClickHandler вам просто нужно установить цвет всех других меток обратно по умолчанию (черный?).

otherLabel.getElement().getStyle().setColor("black");

Если есть много других меток , вам следует учитыватьдержа их в List.Пожалуйста, попробуйте этот маленький пример:

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