Sun*_*nny 6 java swt eclipse-rcp
我开发Eclipse RCP应用程序并遇到问题Table.我们在数据库中有一些布尔格式的数据,用户希望看到该字段使用checkbox.
我试图使用来实现它Button(SWT.CHECK)作为表编辑器,但它的工作速度太慢:(
我试图使用2个图像 - 选中和未选中的复选框,它可以工作,但我不能将它们对齐到中心,它们会自动对齐.
我甚至找到了如何捕捉SWT.MeasureItem和SWT.PaintItem事件并通过更改event.x字段手动处理它们,但我遇到了一个问题 - 我现在无法获得什么列测量或绘画,因为事件不会向我提供该信息.
它是通过重绘时修改事件数据将图像对齐到中心的唯一方法,还是可以通过其他方式通过复选框表示布尔数据?我现在不需要编辑它们,因此只读模式就足够了.
您可以添加PaintListener到表中以及何时绘制所选列(在我的示例中为第5列),检查行的大小并自行对齐图像.
testTable.addListener(SWT.PaintItem, new Listener() {
@Override
public void handleEvent(Event event) {
// Am I on collumn I need..?
if(event.index == 5) {
Image tmpImage = IMAGE_TEST_PASS;
int tmpWidth = 0;
int tmpHeight = 0;
int tmpX = 0;
int tmpY = 0;
tmpWidth = testTable.getColumn(event.index).getWidth();
tmpHeight = ((TableItem)event.item).getBounds().height;
tmpX = tmpImage.getBounds().width;
tmpX = (tmpWidth / 2 - tmpX / 2);
tmpY = tmpImage.getBounds().height;
tmpY = (tmpHeight / 2 - tmpY / 2);
if(tmpX <= 0) tmpX = event.x;
else tmpX += event.x;
if(tmpY <= 0) tmpY = event.y;
else tmpY += event.y;
event.gc.drawImage(tmpImage, tmpX, tmpY);
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6473 次 |
| 最近记录: |