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);
                }
            }
        });
    }
}



Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007