0

私は Eclipse.org の Nebula Grid を使用しており、個々のセルにアクセスしたいと考えています。grid.select(...) によって実現できる個々の GridItem ではなく、セルです。だから私はこのようなグリッドを持っているとしましょう:

final Grid grid = new Grid(shell,SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
grid.setCellSelectionEnabled(true);
grid.setHeaderVisible(true);

GridColumn column = new GridColumn(grid, SWT.None);
column.setWidth(80);
GridColumn column2 = new GridColumn(grid, SWT.None);
column2.setWidth(80);
for(int i = 0; i<50; i++)
{
    GridItem item = new GridItem(grid, SWT.None);
    item.setText("Item" + i);
}

私が言ったように、 grid.select は行全体を選択しますが、これは私が望むものではありません。grid.selectCell(...) も試しましたが、何らかの理由でうまくいきません。使用される座標は、正しい可能性が高いです。

Button btn = new Button(shell, SWT.PUSH);
btn.setText("test");
btn.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
    Point pt = new Point(400,300);
    grid.selectCell(pt);
    }
});

何か案は?

4

1 に答える 1

0

グリッドの場合、ポイント座標は交差する列と行アイテムを表します。つまり、x 座標は列のインデックスを表し、y 座標は行アイテムのインデックスです。

Button btn = new Button (shell, SWT.PUSH);
btn.setText ("test");
btn.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e) {

       // Here the x co-ordinate of the Point represents the column
       // index and y co-ordinate stands for the row index.
       // i.e, x = indexOf(focusColumn); and y = indexOf(focusItem);
       Point focusCell = grid.getFocusCell();
       grid.selectCell(focusCell);

        // eg., selects the intersecting cell of the first column(index = 0)
        // in the second row item(rowindex = 1).
        Point pt = new Point(0, 1);
        grid.selectCell(pt);
}
});
于 2014-02-15T05:18:17.037 に答える