2

編集:これはマックスの提案に基づくコードです

    editor.getControl().addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            Table table = viewer.getTable();
            int currentIndex = table.getSelectionIndex();

            if (e.keyCode == SWT.ARROW_DOWN) {
                if (currentIndex != table.getItemCount() - 1) {
                    table.setSelection(currentIndex+1);

                    IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
                    Object rowObj = sel.getFirstElement();

                    viewer.editElement(rowObj, columnIndex);
                }
            }
        }
    });

編集可能な列を持つJFaceTableViewerがあります(実装によって実行されますEditingSupport)。

セルを編集するときにユーザーが上下の矢印を押して、その上下の行に移動できるようにしたいと思います。これが私が持っているものです:

final TextCellEditor editor = new TextCellEditor(viewer.getTable());

editor.getControl().addKeyListener(new KeyAdapter() {
    @Override
    public void keyReleased(KeyEvent e) {
        if (e.keyCode == SWT.ARROW_DOWN) {
            Table table = viewer.getTable();
            int currentIndex = table.getSelectionIndex();

            if (currentIndex != table.getItemCount() - 1) {
                table.setSelection(currentIndex+1);
            }
        }
    }
});

これにより、選択した行が次の行に移動しますが、テキストボックスは移動しません。つまり、下矢印を押すと、次のようになります。

テキストボックスを特定の行のセルに設定するにはどうすればよいですか?

4

1 に答える 1

6

次の方法を使用します。

org.eclipse.jface.viewers.ColumnViewer.editElement(Object element, int column)
于 2011-07-22T06:44:29.873 に答える