Редактируемая таблица SWT - PullRequest
3 голосов
/ 16 декабря 2009

Как редактировать значения таблицы SWT без использования прослушивателей мыши?

Ответы [ 5 ]

7 голосов
/ 16 декабря 2009

Помогают ли фрагменты TableEditor в приведенной ниже ссылке?

Фрагменты SWT

Первый пример в разделе TableEditor использует SelectionListener для таблицы (в отличие от второго примера, который использует событие MouseDown, которое вы упомянули, что вы не хотите)

Возможно, вы также можете использовать TraverseListener или KeyListener, чтобы помочь вам достичь того, что вы хотите.

4 голосов
/ 30 августа 2011
    final int EDITABLECOLUMN = 1;
tblProvisionInfo.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // Clean up any previous editor control
            final TableEditor editor = new TableEditor(tblProvisionInfo);               
            // The editor must have the same size as the cell and must
            // not be any smaller than 50 pixels.
            editor.horizontalAlignment = SWT.LEFT;
            editor.grabHorizontal = true;
            editor.minimumWidth = 50;
            Control oldEditor = editor.getEditor();
            if (oldEditor != null)
                oldEditor.dispose();                

            // Identify the selected row
            TableItem item = (TableItem) e.item;
            if (item == null)
                return;

            // The control that will be the editor must be a child of the
            // Table
            Text newEditor = new Text(tblProvisionInfo, SWT.NONE);
            newEditor.setText(item.getText(EDITABLECOLUMN));

            newEditor.addModifyListener(new ModifyListener() {
                public void modifyText(ModifyEvent me) {
                    Text text = (Text) editor.getEditor();
                    editor.getItem()
                            .setText(EDITABLECOLUMN, text.getText());
                }
            });         
            newEditor.selectAll();
            newEditor.setFocus();           
            editor.setEditor(newEditor, item, EDITABLECOLUMN);      

        }
    });     

Здесь tblProvision - название вашей таблицы. Вы можете просто отредактировать свою таблицу, нажав на нее. Я объявил EDITABLECOLUMN. это column, который вы хотите редактировать.

1 голос
/ 30 августа 2011

Если вы также можете использовать JFace, а не просто боль SWT, взгляните на JFace Snippets , особенно

  • Snippet036FocusBorderCellHighlighter - Демонстрирует навигацию с помощью клавиатуры, выделяя текущую выбранную ячейку границей фокуса, еще раз демонстрируя гибкость новой поддержки навигации по ячейкам
  • Snippet034CellEditorPerRowNewAPI - Демонстрирует различные типы CellEditor в одной COLUMN с 3.3-API JFace-Viewers
0 голосов
/ 19 сентября 2017

Я предлагаю вам TableViewer , это очень мощная таблица, к которой вы можете использовать привязку данных тоже очень просто.

0 голосов
/ 18 октября 2012

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

Table table = new Table(parent, SWT.NONE);
TableItem item = new TableItem(table, SWT.NONE);
item.setText("My new Text");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...