Как изменить цвет выделения фона для таблицы jface - PullRequest
4 голосов
/ 26 мая 2009

В приложении elipse-rcp я устанавливаю цвет фона для строки в таблице jface, но не хочу, чтобы выделение меняло этот цвет. Я хочу иметь возможность указать изменение цвета для выбранной строки.

Ответы [ 2 ]

7 голосов
/ 27 мая 2009

Согласно этой теме , для JFace Viewers (ListViewer, Table, Tree) посредством использования EraseItem и MeasureItem событий

Общий принцип подробно изложен в статье " Настраиваемый чертежный стол и элементы дерева "

SWT.EraseItem: позволяет клиенту самостоятельно рисовать фон и / или выделение ячейки и влиять на то, следует ли рисовать передний план ячейки

alt text

6 голосов
/ 27 мая 2009
table.addListener(SWT.EraseItem, new Listener() {
    public void handleEvent(Event event) {
        event.detail &= ~SWT.HOT;
        if ((event.detail & SWT.SELECTED) == 0) return; /// item not selected

        Table table =(Table)event.widget;
        TableItem item =(TableItem)event.item;
        int clientWidth = table.getClientArea().width;

        GC gc = event.gc;               
        Color oldForeground = gc.getForeground();
        Color oldBackground = gc.getBackground();

        gc.setBackground(colorBackground);
        gc.setForeground(colorForeground);              
        gc.fillRectangle(0, event.y, clientWidth, event.height);

        gc.setForeground(oldForeground);
        gc.setBackground(oldBackground);
        event.detail &= ~SWT.SELECTED;
    }
});
...