Как привести CheckBox к HasChangeHandler - PullRequest
0 голосов
/ 21 ноября 2011
CheckBox faxGen = new CheckBox();
((HasChangeHandlers) faxGen).addChangeHandler(new ChangeHandler(){
    public void onChange(ChangeEvent event) 
    {
        CheckBox chkBox = (CheckBox) event.getSource(); 
        FixedWidthGrid parent = (FixedWidthGrid) chkBox.getParent();
        Iterator<Integer> selectedRows = parent.getSelectedRows().iterator();
        Integer rowIdx = selectedRows.hasNext() ? selectedRows.next() : -1;
        boolean checked = chkBox.getValue() == true ? true : false;
        setCheckBoxRowSelected(rowIdx, checked, true);
        if (checked){
            pagingScrollTable.getDataTable().getRowFormatter().setStylePrimaryName(rowIdx, "grid2-body-row-hover");
        }
        else
        {
            pagingScrollTable.getDataTable().getRowFormatter().removeStyleName(rowIdx, "grid2-body-row-hover");
            pagingScrollTable.getDataTable().getRowFormatter().removeStyleName(rowIdx, "selected");
        }
        pagingScrollTable.getDataTable().getRowFormatter().removeStyleName(rowIdx, "highlighted selected");
    }
});

1 Ответ

2 голосов
/ 21 ноября 2011

Вы не можете привести CheckBox к экземпляру HasChangeHandlers, поскольку он не реализует этот интерфейс.CheckBox реализует HasValueChangeHandlers, поэтому вы можете использовать его, если хотите.Однако из этого фрагмента кода значение приведения неясно.Поскольку вы точно знаете, что faxGen - это CheckBox (вы объявляете и создаете его экземпляр прямо над строкой, в которую добавляете обработчики), вы должны добавить обработчик (либо valueChangeHandler, либо ClickHandler) без приведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...