我找到了一些针对此问题的解决方案,但它们仅适用于RCP平台。我使用的是RAP平台,但无法找到解决方案。
答案 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/