мы можем установить текст на столбце RowHeader в туманности Grid в Eclipse RCP? - PullRequest
4 голосов
/ 03 ноября 2011

Мой вопрос: у меня в Eclipse RCP есть элемент управления Nebulla Grid (org.eclipse.nebula.widgets.grid.Grid).Я могу сделать RowHeader этой сетки видимой с помощью этого кода: Grid grdTable = new Grid (compParent, SWT.BORDER | SWT.H_SCROLL);grdTable.setRowHeaderVisible (истина);так что во время выполнения он отображает округлые числа, как показано на следующей фотографии:

enter image description here

Теперь мое требование состоит в том, чтобы я хотел отображать текст / символ в столбце RowHeader, как и другие заголовки столбцовнапример.Полное имя, обозначение и т. Д. Как мне добиться этого на сетке туманности?Или это не возможно с помощью этой сетки управления туманностью?что может быть моей альтернативой?

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Я наконец достиг требуемой функциональности в Nebulla Grid, реализовав метод: общедоступная краска vid (GC paramGC, Object paramObject) {код реализации} внутренний интерфейс: setTopLeftRenderer (новый IRenderer () {// методы интерфейса} следующим образом:

grdTable.setTopLeftRenderer(new IRenderer() {
    @Override
    public void setSize(int paramInt1, int paramInt2) {
    // TODO Auto-generated method stub  
    }

    @Override
    public void setSize(Point paramPoint) {

    // TODO Auto-generated method stub

    }           
    @Override
    public void setSelected(boolean paramBoolean) {
    // TODO Auto-generated method stub
    }

    @Override
    public void setMouseDown(boolean paramBoolean) {
    // TODO Auto-generated method stub      
    }

    @Override
    public void setLocation(int paramInt1, int paramInt2) {
    // TODO Auto-generated method stub              
    }

    @Override
    public void setLocation(Point paramPoint) {
    // TODO Auto-generated method stub                  
    }

    @Override
    public void setHover(boolean paramBoolean) {
    // TODO Auto-generated method stub              
    }

    @Override
    public void setFocus(boolean paramBoolean) {
    // TODO Auto-generated method stub              
    }

    @Override
    public void setExpanded(boolean paramBoolean) {
    // TODO Auto-generated method stub              
    }

    @Override
    public void setDisplay(Display paramDisplay) {
    // TODO Auto-generated method stub              
    }

    @Override
    public void setBounds(int paramInt1, int paramInt2, int paramInt3,
                    int paramInt4) {
    // TODO Auto-generated method stub                  
    }

    @Override
    public void setBounds(Rectangle paramRectangle) {
    // TODO Auto-generated method stub          
    }

    @Override
    public void paint(GC paramGC, Object paramObject) {
    // TODO Auto-generated method stub
    //paramGC.setAntialias(1);
    paramGC.setBackground(SWTResourceManager.getColor(240, 240, 240));
    Rectangle rect=new Rectangle(0, 0, 20, 2*(grdTable.getGroupHeaderHeight()));
        paramGC.fillRectangle(rect);
        //making foreground color of the Rectangle to be of text in ColumnHeaders   
    paramGC.setForeground(SWTResourceManager.getColor(0, 0, 0));
        //drawing appropriate text on the topLeftCorner of Grid
    paramGC.drawText("#",5,10,false);               
    }

    @Override
    public Point computeSize(GC paramGC, int paramInt1, int paramInt2,
                    Object paramObject) {
    // TODO Auto-generated method stub

    return null;
    }
});

Где grdTable - это Сетка, используемая в представлении.

1 голос
/ 15 января 2012

Более удобный способ - использовать GridTableViewer:

        GridTableViewer grid = new GridTableViewer(parent, SWT.BORDER
            | SWT.V_SCROLL | SWT.H_SCROLL);
    grid.getGrid().setRowHeaderVisible(true);
    grid.setContentProvider(new ArrayContentProvider());
    grid.setRowHeaderLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            cell.setText(cell.getElement().toString());
        }
    });
...