2

I want to get the selected row in a GWT CellTable when the user pressed down the keys up or down. In my example I have a table with three columns (ID, name, date) and I have implemented the code to handle the click event. When clicking a row I get the selected object. Now I want to do the same when moving through the rows of the table using the arrows keys up and down.

This is my code:

    // Create id column.
    TextColumn<MyObject> idColumn = new TextColumn<MyObject>() 
    {
        @Override
        public String getValue(MyObject obj) 
        {
            return String.valueOf(obj.getId());
        }
    };
    // Create name column.
    TextColumn<MyObject> nameColumn = new TextColumn<MyObject>()
    {
        @Override
        public String getValue(MyObject obj) 
        {
            return obj.getName();
        }
    };
    // Create date column.
    TextColumn<MyObject> dateColumn = new TextColumn<MyObject>() 
    {
        @Override
        public String getValue(MyObject obj) 
        {
            return String.valueOf(obj.getDate());
        }
    };  

    // Create the CellTable element and add columns
    CellTable<MyObject> table = new CellTable<MyObject>();
    table.addColumn(idColumn, "ID");
    table.addColumn(nameColumn, "Name");
    table.addColumn(dateColumn, "Date");

    // Create the selectioModel and the SelectionChangeEvent Handler
    NoSelectionModel<MyObject> selectionModelMyObj = new NoSelectionModel<MyObject>();
    Handler tableHandler = new SelectionChangeEvent.Handler() 
    {
        @Override
        public void onSelectionChange(SelectionChangeEvent event) 
        {
            MyObject clickedObj = selectionModelMyObj.getLastSelectedObject();
            Window.alert("Object selected: " + clickedObj);
        }
    };
    // Add the handler to the selection model
    selectionModelMyObj.addSelectionChangeHandler( tableHandler );
    // Add the selection model to the table
    table.setSelectionModel(selectionModelMyObj); 

Thanks for all.

4

3 に答える 3

4

デフォルトでは、 内のキーボード ナビゲーションは、キーボードで選択された行CellTableのみを更新します。Enterキーを押すだけで行が選択されます。

選択をキーボード選択に従わせたい場合は、キーボード選択ポリシー選択にバインドするように設定できます。でどのように機能するかはわかりませんNoSelectionModelが、おそらく でよりうまく機能するでしょうSingleSelectionModel

于 2013-01-22T10:39:01.750 に答える
1

GWT ウィジェットと celltable に関するキーボード選択ポリシーを理解する必要があります。

正しい方法は、キー "UP" と "Down" による行ナビゲーションと、キー "Left" と "Right" によるセル ナビゲーションのみを許可することです。行の選択は、「スペース」または「Enter」キーをクリックした場合にのみ行う必要があります。

これらはすべて、GWT セル テーブルで既に提供されています。ソースコードとデモを確認できますhttp://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellTable

于 2013-01-22T10:36:11.570 に答える
0

getKeyboardSelectedRow()メソッドを使用して、CellTable の行を取得できます。これは、キーボードまたはマウスで選択された行の int インデックスを返します。

CellTable の GWT Javadoc: http://www.gwtproject.org/javadoc/latest/

public int getKeyboardSelectedRow()

ページ開始インデックスに相対的な、現在キーボードで選択されている行のインデックスを取得します。

これは、SelectionModel で選択された行と同じではありません。キーボードで選択された行は、ユーザーがキーボードまたはマウスでナビゲートした行を参照します。

戻り値: 現在選択されている行、または何も選択されていない場合は -1

于 2015-06-04T14:15:02.403 に答える