在Java中,我使用CheckboxTableViewer
来显示用户的清单。我使用 setInput 方法填充核对表,如下所示。但由于某种原因,当我运行驻留在向导页面中的代码时,它会显示复选框但不显示框的标签(根本没有文本,就像我传递空字符串一样)。我该如何解决这个问题?谢谢。以下是我的代码
public void createControl(Composite arg0) {
Composite container = new Composite(arg0, SWT.NONE);
container.setLayout(new GridLayout());
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
container.setLayoutData(layoutData);
checkboxTableViewer = CheckboxTableViewer.newCheckList(container,
SWT.FULL_SELECTION | SWT.BORDER);
checkboxTableViewer.getTable().setLinesVisible(true);
checkboxTableViewer.getTable().setSize(500, 500);
checkboxTableViewer.setContentProvider(new ArrayContentProvider());
checkboxTableViewer.setLabelProvider(new ITableLabelProvider() {
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
public Image getColumnImage(Object element, int columnIndex) {
// TODO Auto-generated method stub
return null;
}
public String getColumnText(Object element, int columnIndex) {
// TODO Auto-generated method stub
return null;
}
public void addListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
public void dispose() {
// TODO Auto-generated method stub
}
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
});
checkboxTableViewer.setInput(new String[]{"zaid","saad","ahmad"});
checkboxTableViewer.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent event) {
if (checkboxTableViewer.getCheckedElements().length > 0) {
enableNext = true;
} else {
enableNext = false;
}
checkStatus();
}
private void checkStatus() {
canFlipToNextPage();
// explicit call
getWizard().getContainer().updateButtons();
}
});
setControl(container);
}
答案 0 :(得分:1)
由您在表格上设置的标签提供程序来提供表格的文本。您设置的标签提供商只返回null
文本(以及其他所有内容),因此您无法获得任何内容。
由于您只是在表中设置字符串,因此您只需使用标准标签提供程序:
checkboxTableViewer.setLabelProvider(new LabelProvider());