在swt表中选择单元格而不是行

时间:2012-05-13 17:27:23

标签: java eclipse swt rcp

我有一张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() {
               ...

3 个答案:

答案 0 :(得分:1)

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

this.tableViewer.getTable().setLayoutData(
        new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));

答案 1 :(得分: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);
    }
});

答案 2 :(得分:0)

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