当前位置: 首页 > 知识库问答 >
问题:

JFace:将图像添加到表格查看器会产生问题

孟俊发
2023-03-14

我有一个5列的表查看器。在第一列中,我检查了一些条件并添加了一个图像,其余的列将有文本,但当我尝试添加图像,然后用文本添加其余的列时,第二列的文本就位于第一列中的图像旁边。下面是我的示例代码片段:

TableItem item = new TableItem(table, SWT.NONE);
if(condition) {
item.setImage(image);
}
else {
item.setImage(image);
}
item.setText(new String[]{"street", "city","state","Zip Code"});

问题是字符串“street”位于第一列中图像的右侧,但我希望字符串“street”位于第二列中,其余字符串位于后续列中。我做错了什么?如何从第二列添加表项?

共有2个答案

柯正谊
2023-03-14

不太清楚。如果只想在第一列中显示一个图像,则只需提供一个空字符串:

item.setText(new String[]{"", "street", "city","state","Zip Code"});

但如果不利用ContentProvider和LabelProvider的优点,使用jface是不值得的。所以在做类似的事情之前,你应该阅读一些jface教程。

例子:

  TableViewer tableViewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
      tableViewer.setContentProvider(ArrayContentProvider.getInstance());

      TableViewerColumn tableViewerColumnImg = new TableViewerColumn(tableViewer, SWT.NONE);
      tableViewerColumnImg.setLabelProvider(new ColumnLabelProvider()
      {
         @Override
         public Image getImage(Object element)
         {
            Person p = (Person) element;
            return p.getImage();
         }
      });
      TableColumn tblclmnImg = tableViewerColumnImg.getColumn();
      tblclmnImg.setWidth(100);
      tblclmnImg.setText("Img");

      TableViewerColumn tableViewerColumnStreet = new TableViewerColumn(tableViewer, SWT.NONE);
      tableViewerColumnStreet.setLabelProvider(new ColumnLabelProvider()
      {
         @Override
         public String getText(Object element)
         {
            Person p = (Person) element;
            return p.getStreet();
         }
      });
      TableColumn tblclmnStreet = tableViewerColumnStreet.getColumn();
      tblclmnStreet.setWidth(100);
      tblclmnStreet.setText("Street");


      tableViewer.setInput(//set an array of persons here

);
傅鸿波
2023-03-14

表中的每一列都可以有图像和文本。

正在调用项目。设置图像(image)为第一列设置图像。

调用item.setText(String[])设置从第一列开始的每列的文本。所以你的“街道”就在图像旁边。

如果不希望在第一列中显示文本,请将该列的文本设置为空白:

item.setText(new String[]{"", "street", "city", "state", "Zip Code"});

更新:

还可以使用设置单个列的文本

item.setText(column, text);

如果您使用的是TableViewer,则不应使用TableItem,而应使用标签提供程序和内容提供程序。

 类似资料:
  • 在一个工具中,我正在做,我有一个表格,我像这样添加: 效果很好,但现在,我想添加一个JFace表查看器,但是上面的文档似乎只关注表布局,而不是表。我以为,桌面视图会被添加到表中吗?

  • 当我尝试创建复合表列时出错?

  • 在eclipse RCP应用程序中,我有一个具有VIRTUAL样式的桌面浏览器,用于显示大量数据。 我正在使用自定义内容提供程序实现IStructuredContentProvider 我需要通过所有列对表数据进行排序。 所有列的排序都非常好。但是,我在表上有一个选择事件,并且有一些基于表选择的操作。 假设以下项目按顺序显示在视图上 A B C D E 单击特定列后,视图按下面提到的顺序排序 E

  • 嗨,我是android的业余爱好者。我想将图像添加到我的微调器项目中。不幸的是,我不知道怎么做。下面是我的xml文件和Mainactive。感谢阅读。 XML文件 维护活动

  • 我试着在以下帖子中进行解释: 将图片上载到emulator库 此位置的空文件夹 此位置的空文件夹 未添加此类位置 文件,但无法从厨房访问

  • 我正在使用SWT创建一个新项目。我将在项目中有3或4个不同的表。我对SWT相当陌生,我发现自己在问自己是应该只使用< code >表格还是应该使用< code >表格查看器。 我想学习一些好的指导方针,告诉我什么时候只使用< code>Table以及什么时候< code>TableViewer是最佳途径。 < li >使用< code>TableViewer而不是< code>Table有什么好处