0

我有一个 SWT 表。单击时,我不想选择整行,而是选择某些单元格。那可能吗?

我目前的代码是:

tableViewer = new TableViewer(parent, SWT.NONE);
    Table table = tableViewer.getTable();
    this.tableViewer.getTable().setLayoutData(
            new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
    TableLayout layout = new TableLayout();
    layout.addColumnData(new ColumnWeightData(20, 20, true));
    layout.addColumnData(new ColumnWeightData(20, 20, true));
    this.tableViewer.getTable().setLayout(layout);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    tableViewer.setContentProvider(new ArrayContentProvider());
    tableViewer.setLabelProvider(new ITableLabelProvider() {
               ...
4

3 回答 3

1

默认实现是只选择单元格而不是行。在您的情况下,因为您选择fullSelection了 true,所以选择了整行。用这个替换你的代码,它应该可以工作。

this.tableViewer.getTable().setLayoutData(
        new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
于 2012-07-18T11:57:06.487 回答
1

如果要获取单元格的文本,可以使用 getCell()

this.tableViewer.getTable().addMouseListener(new MouseAdapter() {
    public void mouseDown(MouseEvent e) {
        ViewerCell viewerCell = this.tableViewer.getCell(new Point(e.x,e.y));
        String cellText = viewerCell.getText();
        System.out.println("Cell clicked: " + cellText);
    }
});
于 2013-07-31T14:44:50.450 回答
0

转到JFace Snippets,然后搜索“cell”。有几个有用的片段可供选择......

于 2012-05-13T19:12:34.653 回答