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 に答える