我目前正在开发一个向导,它将指导我完成几个步骤。
在其中一个WizardPages上,我希望有一个动态填充的表,用户可以在其中选择一些行。
我为此使用CheckboxTableViewer。
目前,它运行良好(包括动态列数等)
结果如屏幕截图所示。
我的问题是,第一列跨越带有复选框的列。我想要以下行为:
第一列标题(屏幕快照中的“ nodeAlias”)应从列顶部开始,而不是复选框上方(因此需要向右移一点)
我想在执行“全选/取消全选”的复选框上方的标题中具有一个复选框
我在向导页面(extends WizardPage
)中使用的代码如下所示:
public class ShowResults extends WizardPage {
private Table table;
public ShowResults() {
super("wizardPage");
setTitle("Title");
setDescription("Description");
}
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NULL);
setControl(container);
container.setLayout(new GridLayout(1, false));
CheckboxTableViewer checkboxTableViewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER | SWT.FULL_SELECTION);
createColumns(checkboxTableViewer);
table = checkboxTableViewer.getTable();
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
table.setHeaderVisible(true);
table.setLinesVisible(true);
checkboxTableViewer.setContentProvider(ArrayContentProvider.getInstance());
checkboxTableViewer.setInput(getData()); // returns a list of Record-Objects
}
private void createColumns(CheckboxTableViewer checkboxTableViewer) {
// get the required columns as list and act for each
for(String columnName : getColumnNames()){
// create a column for the first name
TableViewerColumn colFirstName = new TableViewerColumn(checkboxTableViewer, SWT.NONE);
colFirstName.getColumn().setWidth(150);
colFirstName.getColumn().setText(columnName);
colFirstName.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
Record r = (Record) element;
return r.getValue(columnName);
}
});
}
}
我还没有包括
Record
的类定义,因为无论如何信息的显示仍然有效。 (我想这对这个问题并不重要)。 最佳答案
为什么不看看星云网格小部件?您可以为列标题编写自己的CellRenderer。见here
关于java - CheckboxTableViewer第一列全选,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31944765/