2

当用户向上或向下按下键时,我想在 GWT CellTable 中获取选定的行。在我的示例中,我有一个包含三列(ID、名称、日期)的表,并且我已经实现了处理点击事件的代码。单击一行时,我得到选定的对象。现在我想在使用向上和向下箭头键移动表格的行时做同样的事情。

这是我的代码:

    // 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); 

谢谢大家。

4

3 回答 3

4

默认情况下,a 中的键盘导航CellTable仅更新键盘选择的行。只有按回车键,该行才会被选中

如果您希望选择跟随键盘选择,您可以将键盘选择策略设置为绑定到选择。我不确定它如何与 a 一起工作,NoSelectionModel但可能会更好地与 a 一起工作SingleSelectionModel

于 2013-01-22T10:39:01.750 回答
1

您需要了解 GWT 小部件和 celltable 的键盘选择策略。

正确的方法是只允许使用键 "UP" 和 "Down" 进行行导航,使用键 "Left" 和 "Right" 进行单元格导航。行的选择只能在单击“空格”或“回车”键时进行。

所有这些都已随 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/

公共 int getKeyboardSelectedRow()

获取当前通过键盘选择的行的索引,相对于页面起始索引。

这与 SelectionModel 中的选定行不同。键盘选择的行是指用户通过键盘或鼠标导航到的行。

返回: 当前选择的行,如果没有选择,则返回 -1

于 2015-06-04T14:15:02.403 回答