简体   繁体   中英

How listen for check box in JFace Table Viewer

I am using a Table Viewer with check boxes as following:

final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);

What is THE solution to listen to check boxes selection/unselection in this viewer?

Thanks in advance, Manu

Take a look at class CheckboxTableViewer derived from TableViewer which simplifies the use of a TableViewer with the SWT.CHECK style.

Add an implementaion of ICheckStateListener to your CheckboxTableViewer via addCheckStateListener() . The only method you have to implement is checkStateChanged(CheckStateChangedEvent event) where event contains all necessary information about the state change.

If you need only one column you can create a CheckboxTableViewer like this:

CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);

You listen for SWT.Selection events on the Table and check for event.detail == SWT.CHECK ...

See this example for actual code....

Expanding @Tonny's answer, here's the listener you would use:

tableViewer.getTable().addListener(SWT.Selection, (e) -> {      
    if (e.detail == SWT.CHECK) {
        MyModel modelObj = (MyModel) e.item.getData();
        TableItem item = (TableItem) e.item;
        System.out.println("ITEM CHECKED -> " + item.getChecked());
    }
});

You see, you can cast the widget to TableItem to understand whether the user has either checked or unchecked the checkbox.


Still, as @Claimos' says, I would just use a JFace CheckboxTableViewer .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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