Tabelle mit mehrzeiligem Text pro Zeile
Diese Tabelle macht aus einer normalen SWT-Table eine Tabelle, welche auch mehrzeiliger Text anzeigen kann.
package com.sowas.javawiki.multirowtabledemo; public class MultiRowTable { public static final int TEXT_MARGIN = 4; private final TableViewer m_viewer; public MultiRowTable(final Table table) { m_viewer = new TableViewer(table, SWT.V_SCROLL); addListeners(table); } public TableViewer getViewer() { return m_viewer; } private void addListeners(Table table) { table.addListener(SWT.MeasureItem, new Listener() { public void handleEvent(Event event) { TableItem item = (TableItem) event.item; String text = null; if ((text = item.getText(event.index)) != null) { event.height = event.gc.textExtent(text).y + MultiRowTable.TEXT_MARGIN; } } }); table.addListener(SWT.EraseItem, new Listener() { public void handleEvent(Event event) { event.detail &= ~SWT.FOREGROUND; } }); table.addListener(SWT.PaintItem, new Listener() { public void handleEvent(Event event) { TableItem item = (TableItem) event.item; MyObject itemData = (MyObject)item.getData(); if (itemData != null) { String text = null; int yOffset = MultiRowTable.TEXT_MARGIN / 2; String propertyName = null; text = itemData.getColumnString(event.index); event.gc.drawText(text, event.x + TEXT_MARGIN, event.y + yOffset, true); } } }); } }