星云gridTableViewer单元格内容应该换行

时间:2013-12-26 09:35:09

标签: java eclipse-rcp jface tableviewer nebula

我正在为我的应用程序使用星云gridTableViewer,在它的单元格中,某些时候内容是如此冗长,所以我想显示为WRAP(在多行中)。我做了改动,但没有反映出来:

我添加了SWT.WRAP但是没有用,我试图将文本包装在LabelProvider中,但它也不起作用,所以我怎么能这样做?

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

1 个答案:

答案 0 :(得分:2)

将SWT.WRAP添加到gridTableViewer不会导致网格单元格中的文本换行。 gridColumn.setWordWrap(true)导致在输入的值应用于编辑器(setvalue called)后包装单元格中输入的文本。要以交互方式包装文本,应将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,它有效。