如何将图像与 table 单元格的中心对齐 (SWT Table) RAP 平台

How to align image to center of table cell (SWT Table) RAP Platform

我找到了这个问题的一些解决方案,但它们仅适用于 RCP 平台。我正在使用 RAP 平台,但找不到解决方案。

要自定义对齐图像,您在 RAP 中有两种选择:

标记

相应地准备 table 后,您可以将 HTML 的子集与 table 项的文本一起使用。

Table table = new Table( parent, SWT.NONE );
table.setData( RWT.MARKUP_ENABLED, Boolean.TRUE );
table.setData( RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf( 80 ) );

TableItem item = new TableItem( table, SWT.NONE );
String imageUrl = RWT.getRequest().getContextPath() + "/" + registerImage( "foo.png" );
item.setText( "<img src='" + imageUrl + "' width='10' height='10' style='padding-right:5px'/>" );

注册图片的代码(假设图片位于 class 路径)应该如下所示:

String registerImage( String resourceName ) throws IOException {
  IResourceManager resourceManager = RWT.getResourceManager();
  if( !resourceManager.isRegistered( resourceName ) ) {
    InputStream inputStream = CLASSLOADER.getResourceAsStream( resourceName );
    try {
      resourceManager.register( resourceName, inputStream );
    } finally {
      inputStream.close();
    }
  }
  return resourceManager.getLocation( resourceName );
}

可以在此处找到更多详细信息:http://eclipsesource.com/blogs/2012/09/12/making-your-images-available-using-markup/

行模板

使用行模板,可以替换 table 的默认列布局,并且可以更改项目的单元格布局方式。

要更改图像的位置,请像往常一样使用 item.setImage( ... ) 进行设置,然后创建一个模板来根据需要定位图像。 最后 table 被告知使用带有 table.setData( ... ) 的模板。

Template template = new Template();
ImageCell imageCell = new ImageCell( template );
imageCell.setBindingIndex( 0 ); // bind to image from column 0
imageCell.setTop( 4 ).setLeft( 4 ).setWidth( 48 ).setHeight( 48 );

table.setData( RWT.ROW_TEMPLATE, template );

更多相关信息:http://eclipsesource.com/blogs/2013/11/14/rap-2-2m3-introducing-row-templates/