Dies ist eine alte Version des Dokuments!
Tabelle mit mehrzeiligem Text pro Zeile
package com.sowas.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; Object itemData = item.getData(); if (itemData != null) { String text = null; int yOffset = MultiRowTable.TEXT_MARGIN / 2; String propertyName = null; switch (event.index) { case 0: text = "Spalte 1"; break; case 1: text = "Spalte 2"; break; case 2: text = "Spalte 3"; break; } event.gc.drawText(text, event.x + TEXT_MARGIN, event.y + yOffset, true); } } }); } }