我有一个包含5列的表查看器。在第1列中,我检查了一些条件并添加了一个图像,其余列将包含文本,但是当我尝试添加图像然后添加其余列的文本时,第二列的文本就位于在第1列的图像旁边。这是我的示例代码段:
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列添加表项?
答案 0 :(得分:0)
表格中的每一列都可以同时包含图片和文字。
调用item.setImage(image)
设置第一列的图像。
调用item.setText(String [])
设置从第一列开始的每列的文本。所以你的街道"在图像旁边。
如果您不想在第一列中添加文字,请将该列的文字设为空白:
item.setText(new String[]{"", "street", "city", "state", "Zip Code"});
更新
您还可以使用
设置各列的文本item.setText(column, text);
如果您使用TableViewer
,则不应使用TableItem
,而应使用标签提供商和内容提供商。
答案 1 :(得分:0)
不太清楚。如果您只需要第一个列中的图像,那么只需提供一个空字符串:
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
);