我用的 TableViewer 显示信息在一个表中。用户可以选择一所示的选项中选择一个线表。

我想创建一个表在矩阵的形式,其用户不仅可以选择的路线。它应该是可选择的每一个项目表,像第2行列3.对于每一个项目选择一种行动来处理这个项目,因为它是在TableViewer.

我现在我可以添加CellModifier和CellEditors线的列表,但基准的行动总是线的对象,而不是选择的表项.

没有人有一个例子如何创建这样一个矩阵内部的复合?我可以创建它通过设置一个GridLayout和添加组件在一环,但是比我的问题,当我想要重新复合的新的儿童。该TableViewer并已经有这样的处理,所以我不想实施它。

有帮助吗?

解决方案

我有同样的问题一段时间以前只有这样,我找到了解决,它是注册鼠监听器在他表件相关的表格观察者。

MouseListener columnSelectionMouseListener = new ColumnSelectionMouseListener();
getViewer().getTable().addMouseListener(columnSelectionMouseListener);

public class ColumnSelectionMouseListener implements MouseListener {

    private TableColumn selectedColumn;

    @Override
    public void mouseDoubleClick(MouseEvent e) {
        // Nothing to do here
    }

    @Override
    public void mouseDown(MouseEvent e) {
        table = (Table) e.widget;
    TableItem item = table.getItem(new Point(e.x, e.y));
    for (int i = 0; i < table.getColumnCount(); i++) {
        TableColumn column = table.getColumn(i);
        Rectangle bounds = item.getBounds(i);
        if (bounds.contains(e.x, e.y)) {
            selectedColumn = column;
        }
    }
    }

    @Override
    public void mouseUp(MouseEvent e) {
        // Nothing to do here
    }

    public TableColumn getSelectedField() {
           return selectedColumn;
    }
}

然后,例如在观众的选择监听,你可以要求鼠听这柱是选择的时候老鼠已经被压,并结合,与所选择的路线,来自观察者的选择以执行适当的行动。

希望这可以帮助。

Manu

其他提示

也许下JFace段将有助于:Snippet058CellNavigationIn34

国际非政府组织

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top