当前位置: 首页 > 面试题库 >

如何将图像与表格单元格的中心对齐(SWT表)

戚云
2023-03-14
问题内容

我开发了Eclipse RCP应用程序,并且遇到了问题Table。我们数据库中有一些布尔格式的数据,用户希望使用来查看该字段checkbox

我试图使用来实现它Button(SWT.CHECK)作为 表编辑器 ,但它的工作速度太慢:(

我尝试使用2张图片-选中和未选中的复选框,都可以,但是我无法将它们居中对齐,它们会自动向左对齐。

我什至找到了如何捕获SWT.MeasureItemSWT.PaintItem事件以及如何通过更改event.x字段手动处理它们,但是我遇到了一个问题-
我现在无法测量或绘制哪个列,因为Event不能为我提供该信息。

它是通过在重绘时修改事件数据来使图像居中对齐的唯一方法,还是可能存在通过复选框表示布尔数据的其他方法?我现在不需要编辑它们,因此只读模式就足够了。


问题答案:

您可以添加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);
        }
    }
});


 类似资料:
  • 我有以下代码将图像放在比图像大小更宽的表格单元格中心。我使用了文本中心和对齐中产阶级,但没有任何效果。图像仍然在单元格的左侧。我是引导新手,所以不知道任何其他技术。

  • Word显示图像有问题。我真的不知道问题出在哪里

  • 我目前正在使用作为用户交互界面网格,它运行良好。但是,我想启用水平滚动。网格每页支持8个项目,当项目总数为4个时,这是启用水平滚动方向时应该如何排列项目: 这里0 - 有没有办法让它们像这样居中对齐: 这样内容看起来更干净? 下面的安排也可能是我期待的一个解决方案。

  • 问题内容: 根据该规范,默认值是。 将框的基线与父框的基线对齐。如果该框没有基线,则将下边距边缘与父对象的基线对齐。 但是,当涉及表格单元格()时,默认值始终为。 将框的垂直中点与父框的基线对齐,再加上父框x高度的一半。 我希望对此行为进行官方确认,但在W3C文档中找不到任何内容。我发现的所有内容都显示默认值为。 它在哪里说表单元的默认值是? 问题答案: 如规范所述,的初始值始终为: 垂直对齐 初

  • 将图稿与像素网格无缝对齐... 在 Illustrator CC 2017 版中引入 在 Illustrator 中,您可以创建像素级优化的图稿,在采用不同的笔触宽度和对齐选项时,这些图稿会在屏幕上显得明晰锐利。只需单击一次即可选择将现有对象与像素网格对齐,也可以在绘制新对象时对齐对象。当变换对象时,您可以保留像素对齐,而不会扭曲图稿。像素对齐适用于对象及其包含的单个路径段和锚点。与像素网格对齐前