Как поставить флажок «(де) выбрать все» в заголовке таблицы SWT? - PullRequest
6 голосов
/ 19 августа 2010

У меня есть таблица SWT, которую я создаю в стиле SWT.CHECK для отображения флажка рядом с каждой строкой.Мои пользователи запросили еще один флажок в строке заголовка таблицы, чтобы позволить им выбрать / отменить выбор всех строк одним щелчком мыши.

Я не вижу очевидного способа сделать это, и я нашел только примеры Swing / JTable через Google.Кто-нибудь знает как это сделать?Я надеюсь, что это возможно без повторной реализации Table или возврата к контекстному меню заголовка.

Ответы [ 3 ]

6 голосов
/ 28 июня 2011

Просто создайте два изображения флажка. Первый без галочки и второй с галочкой. Теперь добавьте первое изображение в заголовок tableColumn. После этого добавьте слушатель в tableColumn таким образом, чтобы при первом нажатии кнопки запускался метод table.selectALL() вместе с изменением изображения заголовка tableColumn на второе. При повторном нажатии кнопки вызовите метод table.deSelectAll() и замените заголовок tableColumn первым изображением.

Вы можете использовать это условие:

Когда установлен флажок (изображение), используйте цикл for, чтобы проверить, любой из флажков в таблице отмечен. если кто-то найден проверил, затем запустил метод table.deSelectAll (), иначе запустил Метод table.selectAll ().

Не будет никаких проблем с "флажком" при изменении размера таблицы / вдовы.

tableColumn0.addListener(SWT.Selection, new Listener() {
    @Override
    public void handleEvent(Event event) {
        // TODO Auto-generated method stub
        boolean checkBoxFlag = false;
        for (int i = 0; i < table.getItemCount(); i++) {
            if (table.getItems()[i].getChecked()) {
                checkBoxFlag = true;
            }
        }

        if (checkBoxFlag) {
            for (int m = 0; m < table.getItemCount(); m++) {
                table.getItems()[m].setChecked(false);
                tableColumn0.setImage(new Image(Display.getCurrent(),
                        "images/chkBox.PNG"));

                table.deselectAll();

            }
        } else {
            for (int m = 0; m < table.getItemCount(); m++) {
                table.getItems()[m].setChecked(true);
                tableColumn0.setImage(new Image(Display.getCurrent(),
                        "images/chkBox2.PNG"));

                table.selectAll();
            }
        }

    }
});
3 голосов
/ 29 августа 2010

Вы можете использовать FormLayout, чтобы разрешить укладку объектов, затем добавить флажок поверх таблицы следующим образом:

FormData fd = new FormData();
fd.left = new FormAttachment(table, 5, SWT.LEFT);
fd.top = new FormAttachment(table, 5, SWT.TOP);
checkbox.setLayoutData(fd);
checkbox.moveAbove(table);

Возможно, вы найдете его полезным для правильного выравниванияфлажок для получения высоты строки заголовка таблицы с table.getHeaderHeight().

0 голосов
/ 19 января 2017

Полностью опишите этот код: de) установите флажок «все» в таблице SWT Заголовок


public class TaskView extends ViewPart {

    public static TableItem std_item;
    public static List<Student> std=new ArrayList<Student>();
    public static Table table;
    private TableColumn col_name_add;
    private TableColumn col_image_add;
    static int countcheck;
    static int  staticno=1;
    static int check=0,uncheck=0;

    public TaskView() {
        setTitleImage(ResourceManager.getPluginImage("RCP_Demo", "icons/Tasksview.png"));
    }

    @Override
    public void createPartControl(Composite parent) {
        parent.setLayout(null);

        ////////// Table Create
        table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION|SWT.CHECK|SWT.CENTER);
        ////SWT.CHECK: Display first column check box

        table.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {

                TableItem item = table.getItem(table.getSelectionIndex());
                for(int col=1;col<table.getColumnCount();col++)
                {
                    //Table_Column Checked or Not
                    if(item.getChecked())
                        item.setChecked(false);
                    else
                        item.setChecked(true);

                    /////////First column value get
                    if(col==1)
                    {
                        System.out.println(item.getText(col));
                    }
                    TableItem[] itemCheck = table.getItems();
                    for(int i=0;i<table.getItemCount();i++)
                    {
                        if(itemCheck[i].getChecked())
                            ++check;
                        else
                            ++uncheck;
                    }
                    if(check==table.getItemCount())
                        //Change column image:Checkbox checked
                        col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/check.png"));
                    else
                        //Change column image:Checkbox Unchecked
                        col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png"));

                    //System.out.println("Check:"+check+"uncheck"+uncheck);
                    check=0;
                    uncheck=0;
                }
            }
        });
        table.setBounds(10, 10, 343, 297);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        ////// SWT Table header Column
        col_image_add = new TableColumn(table, SWT.LEFT);
        col_image_add.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                //All Row selected or Not
                //column Icon change checked(selected) or not

                System.out.println("Total Row Count:"+table.getItemCount());
                TableItem item[] = table.getItems();
                if(staticno==1)
                {
                    for(int i=0;i<table.getItemCount();i++)
                    {
                        item[i].setChecked(true);
                        col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/check.png"));
                    }
                    staticno=0;
                }else
                {
                    for(int i=0;i<table.getItemCount();i++)
                    {
                        item[i].setChecked(false);
                        col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png"));
                    }
                    staticno=1;
                }
            }
        }
        });
        col_image_add.setMoveable(true);
        col_image_add.setToolTipText("Click");
        col_image_add.setImage(ResourceManager.getPluginImage("RCP_Demo", "icons/uncheck.png"));
        col_image_add.setWidth(36);

        //Dynamic column Name add

        String[] Col_names={"Stud_id","Stud_Name","Stud_Gender"};
        for(int i=0;i<Col_names.length;i++)
        {
            col_name_add = new TableColumn(table,SWT.CENTER);
            col_name_add.setWidth(100);
            col_name_add.setText(Col_names[i]);
        }
    }
    public TableViewer getViewer() {
          return null;
    }
}

спасибо ....

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