对于这种特殊情况CheckboxTableViewer
,我找不到任何答案(使用),所以我希望它不会重复。
我createPartControl()
在Eclipse视图(3.x)中具有以下内容。
我正在尝试在中显示两个按钮和一个可检查的表格GridLayout
,如下所示
-------------------
| Button | Button |
-------------------
| Table |
-------------------
没什么壮观的。到目前为止,一切都显示正常。我的表格嵌入在内CheckboxTableViewer
,只有一列,有时内容(String
)的长度大于列的宽度。因此,我试图使Table
(通过viewer.getTable()
,未显式构造!)可滚动以使所有内容可用。这行不通,我不明白为什么。
我打周围的SWT
样式位(SWT.H_SCROLL
,SWT.V_SCROLL
),我试过ScrollableComponent
,但无济于事。我无法正常ScrolledComponent
工作,因为我没有显式构造表,因此无法setContents()
正常工作。
以下是我的主旨createPartControl()
。
public void createPartControl(Composite parent) {
parent.setLayout(new GridLayout(2, false));
addSelectionButtons(parent); // Works
myTableViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER);
myTableViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Table myTable = (Table) myTableViewer.getControl();
TableLayout tableLayout = new TableLayout();
tableLayout.addColumnData(new ColumnWeightData(100, 50, true));
myTable.setLayout(tableLayout);
myTableViewer.setContentProvider(new MyContentProvider());
TableViewerColumn viewerCol = new TableViewerColumn(myTableViewer, SWT.LEFT);
TableColumn col = viewerCol.getColumn();
col.setText("My column");
viewerCol.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
return text; // Dummy var
}
});
myTableViewer.setInput(getInput()); // Gets model
myTableViewer.getTable().setHeaderVisible(true);
myTableViewer.getTable().setLinesVisible(true);
}
我知道这是边界问题“请给我codez”,但是我真的找不到此设置的问题。
我已经设法解决了这个问题,回到第一点,然后以我能找到的最常见的方式重新实现。IE:
LabelProvider
(并删除了ColumnLabelProvider
),GridData
在表格上设置一个简单的布局数据对象(否则就不会弄乱它),TableColumn
部分(尽管表中只有一列,但我仍然需要声明aTableColumn
才能设置列标题)。注:本TableColumn
必须pack()
编,否则内容不会显示。在TableColumn
API中:“使接收器调整为首选大小。 ”简单且有效。
public void createPartControl(Composite parent) {
parent.setLayout(new GridLayout(1, true));
addSelectionButtons(parent); // Adds select/deselect all buttons
myTableViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
myTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
myTableViewer.setContentProvider(new MyContentProvider());
myTableViewer.setLabelProvider(new MyLabelProvider());
myTableViewer.setInput(getInput()); // Gets model
TableColumn column = new TableColumn(myTableViewer.getTable(), SWT.FILL);
column.setText("My column");
column.pack();
myTableViewer.getTable().setHeaderVisible(true);
myTableViewer.getTable().setLinesVisible(true);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句