문제

나는 그것을 사용한다 테이블 뷰어 테이블에 정보를 보여줍니다. 사용자는 테이블의 한 줄을 선택하여 표시된 옵션 중 하나를 선택할 수 있습니다.

매트릭스 양식으로 테이블을 만들고 싶습니다. 여기서 사용자는 라인을 선택할 수 없습니다. 행 2 열 3과 같이 테이블의 모든 항목을 선택할 수 있어야합니다. 모든 항목 선택마다 테이블 뷰어와 같이이 항목을 처리하도록 조치가 호출됩니다.

지금까지, 나는 테이블의 열선에 셀 모디퍼와 셀 편집기를 추가 할 수 있지만, 동작에 대한 참조는 항상 선택된 tableItem이 아닌 라인 객체입니다.

누군가 복합재 내에서 그러한 매트릭스를 만드는 방법이 예를 가지고 있습니까? GridLayout을 설정하고 for-loop에 구성 요소를 추가하여 만들 수 있지만, 새로운 어린이로 복합재를 다시 그리기를 원할 때 문제를 겪는 것보다 문제가 발생합니다. TableViewer는 이미이 처리를 가지고 있으므로 다시 구현하고 싶지 않습니다.

도움이 되었습니까?

해결책

나는 얼마 전에 같은 문제를 겪었고 그것을 해결하는 유일한 방법은 테이블 뷰어와 관련된 SWT 테이블 위젯에 마우스 리스너를 등록하는 것이 었습니다.

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;
    }
}

그런 다음 예를 들어 뷰어의 선택 리스너에서 마우스를 누르면 어떤 열이 선택되었는지 마우스 리스너에게 요청하고이를 뷰어의 선택에서 선택한 라인과 결합하여 적절한 조치를 수행 할 수 있습니다.

이것이 도움이되기를 바랍니다.

마누

다른 팁

다음 Jface 스 니펫이 도움이 될 것입니다.Snippet058CellNavigationIn34

인고

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top