4

elipse-rcpアプリケーションで、jfaceテーブルの行の背景色を設定していますが、選択によってこの色を変更したくありません。選択した行の色の変更を指定できるようにしたい。

4

2 に答える 2

7

このスレッドによると、 for JFace Viewers( ListViewer, Table, Tree) by using EraseItemand MeasureItemevents

記事「カスタム ドローイング テーブルとツリー アイテム」で詳しく説明されている一般原則

SWT.EraseItem: クライアントは、セルの背景や選択範囲をカスタム描画し、セルの前景を描画するかどうかに影響を与えることができます

代替テキスト

于 2009-05-26T20:07:29.507 に答える
6
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;
    }
});
于 2009-05-27T16:54:57.990 に答える