Grid 我们可以在EclipseRCP中的nebulla网格中的RowHeader列上设置文本吗?
我在EclipseRCP的视图中有一个Nebula网格(org.eclipse.Nebula.widgets.Grid.Grid)控件。我希望使此网格的行标题可见,以便在运行时显示行号,如下图所示:Grid 我们可以在EclipseRCP中的nebulla网格中的RowHeader列上设置文本吗?,grid,eclipse-rcp,Grid,Eclipse Rcp,我在EclipseRCP的视图中有一个Nebula网格(org.eclipse.Nebula.widgets.Grid.Grid)控件。我希望使此网格的行标题可见,以便在运行时显示行号,如下图所示: 现在,我的要求是在行标题列上显示文本/字符,就像其他列标题一样(例如全名、名称等)。如何在星云网格上实现这一点?或者,这是不可能的星云网格控制?我的替代方案是什么?通过实现以下方法,我终于在Nebula Grid中实现了所需的功能: public void paint(GC paramGC,Obj
现在,我的要求是在行标题列上显示文本/字符,就像其他列标题一样(例如全名、名称等)。如何在星云网格上实现这一点?或者,这是不可能的星云网格控制?我的替代方案是什么?通过实现以下方法,我终于在Nebula Grid中实现了所需的功能: public void paint(GC paramGC,Object paramObject){implementaion code} 内部接口: setTopLeftRenderer(新的IRenderer(){//interface methods} 详情如下:
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是视图中使用的网格。更方便的方法是使用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());
}
});