2013-01-22 5 views
2

나는 사용자가 위 또는 아래로 키를 눌렀을 때 GWT CellTable에서 선택한 행을 싶어. 내 예제에서는 세 개의 열 (ID, 이름, 날짜)이있는 테이블이 있고 click 이벤트를 처리하는 코드를 구현했습니다. 행을 클릭하면 선택한 객체가 나타납니다. 이제 화살표 키를 사용하여 테이블의 행을 위아래로 이동할 때도 동일한 작업을 수행하려고합니다. 모든키를 위아래로 사용하면 GWT CellTable에서 선택된 행을 어떻게 얻을 수 있습니까?

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

감사 :

내 코드입니다.

답변

1

당신은 GWT 위젯과 celltable에 키보드 선택 정책 w.r.t을 이해할 필요가있다.

올바른 방법은 "UP"키 만 행 탐색 및 "아래로"세포 키 "왼쪽"을 탐색 및 "오른쪽"를 허용하는 것입니다. 행을 선택하려면 "Space"또는 "Enter"키를 누르십시오.

이 모든

이미 GWT 세포 테이블이 제공된다. 당신은 소스 코드를 확인하고 기본적으로 http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellTable

4

데모 수하는 CellTable 내에서 키보드 탐색에만 keyboard selected row를 업데이트합니다. 만 입력 키를 눌렀을 때 행이 선택이 될 것입니다.

키보드 선택을 선택하려면 keyboard selection policybound to selection으로 설정할 수 있습니다. 나는 그것이 NoSelectionModel과 어떻게 작동할지는 모르지만, 아마도 SingleSelectionModel으로 더 잘 작동 할 것이다.

+0

감사합니다. CellTable의 작동 방식을 알지 못했습니다. NoSelectionModel 대신 SingleSelectionModel을 사용할 것이고, 그것은 내 프로그램에서 더 잘 작동한다. 감사. –

0

getKeyboardSelectedRow() 메소드를 사용하여 CellTable의 행을 가져올 수 있습니다. 이것은 키보드 또는 마우스를 통해 선택된 행의 int 인덱스를 반환합니다. CellTable에 대한

GWT의 자바 독 : http://www.gwtproject.org/javadoc/latest/

공공 INT getKeyboardSelectedRow()

현재 페이지의 개시 인덱스를 기준으로 키보드를 통해 선택된 행의 인덱스를 가져옵니다.

이것은 selectionModel의 선택 행에서 동일하지 않다. 선택된 키보드 행은 사용자가 키보드 또는 마우스를 통해 탐색 한 행을 나타냅니다.

반환 값 : 현재 선택된 행. 선택하지 않으면 -1입니다.