1

我在我的应用程序中使用 nebula gridTableViewer,在它的单元格中,有时内容很长,所以我想显示为 WRAP(在多行中)。我为它做了改变,但它没有反映:

我添加SWT.WRAP但不起作用,我也尝试将文本包装在 LabelProvider 中,但它也不起作用,所以我该怎么做?

我是否需要为此添加侦听器。

4

1 回答 1

2

将 SWT.WRAP 添加到 gridTableViewer 不会导致网格单元格中的文本换行。gridColumn.setWordWrap(true) 使在单元格中输入的文本在输入的值应用于编辑器后被换行(调用 setvalue)。要以交互方式包装文本,应将 SWT.WRAP 作为样式添加到 TextCellEditor 或放置在单元格中的 Text 小部件中。

gridViewerColumn.getColumn.setWordWrap(true);
gridTableViewer.setEditingSupport(new EditingSupport(gridTableViewer) {
....
    @Override
    protected CellEditor getCellEditor(Object element) {
        TextCellEditor cellEditor = new TextCellEditor(gridTableViewer.getGrid(),
                                    SWT.WRAP)
        return cellEditor;
    }

或者

....
final GridItem item = grid.getItem(grid.getTopIndex());
for (int i = 0; i < grid.getColumnCount(); i++) {
    final Text text = new Text(grid, SWT.WRAP);
    Listener textListener = new Listener() {
        public void handleEvent(final Event e) {
            switch (e.type) {
                case SWT.FocusOut:
                item.setText(column, text.getText());
                ....
            }
        }
    }
}

我之前在 TextCellEditor 中使用过 SWT.WRAP,它可以工作。

于 2014-02-15T07:18:39.493 回答