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

时间:2015-06-10 16:12:21

标签: java eclipse swt rcp eclipse-rap

我找到了一些针对此问题的解决方案,但它们仅适用于RCP平台。我使用的是RAP平台,但无法找到解决方案。

1 个答案:

答案 0 :(得分:3)

要自定义图像,RAP中有两个选项:

<强>标记

在相应地准备好表格之后,您可以使用HTML的子集和表格项目的文本。

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'/>" );

注册图像的代码(此处假设图像位于类路径上)应如下所示:

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/

行模板

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

要更改为图像的位置,请使用item.setImage( ... )照常设置,然后创建一个模板,根据需要定位图像。 最后,该表被告知使用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/