1

smartGWT プロジェクトのタイル グリッドにファイル アイコンをロードしています。Enterキーを押すと、選択したファイルを開いて表示したい。

onKeyPress ハンドラーをオーバーライドすると機能しますが、左/右/上/下の矢印キーを使用したタイル グリッドのナビゲーション動作が失われます。

私の質問は..、Enterキーをオーバーライドしながら、デフォルトの処理動作を保持する方法です。

  tileGrid.addKeyPressHandler (new KeyPressHandler() {
    @Override
    public void onKeyPress(KeyPressEvent event) {
      if (EventHandler.getKey().equals("Enter")) {
       //do something special here
      }
      else {
        **//TODO: do the default processing..**.
      }
    }
  });

編集:

@Ras、これは問題をシミュレートするコードです。

package com.rv.gwtsample.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.events.KeyPressEvent;
import com.smartgwt.client.widgets.events.KeyPressHandler;
import com.smartgwt.client.widgets.tile.TileGrid;
import com.smartgwt.client.widgets.tile.TileRecord;

/**
 * @author rvnath
 *
 */
public class MyTileGrid implements EntryPoint {

    /* (non-Javadoc)
     * @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
     */
    @Override
    public void onModuleLoad() {
        // TODO Auto-generated method stub
        TileGrid grid = new TileGrid();
        grid.setLeft(50);
        grid.setTop(50);
        grid.setWidth("300");
        grid.setHeight("200");
            DetailViewerField field = new DetailViewerField("Name");
        grid.setFields(field);
        grid.addKeyPressHandler(new KeyPressHandler() {
            @Override
            public void onKeyPress(KeyPressEvent event) {
                if (event.getKeyName().equals("Enter"))
                    GWT.log("Enter pressed");
            }
        });

    Record[] rec = new TileRecord[32];
    for (int i=0; i<32; ++i) {
        rec[i] = new TileRecord();
    }

    grid.setData(rec);
    grid.draw();
}

}

onKeyPress ハンドラーを無効にすると、矢印キーでタイル グリッドの要素間を移動できます。有効にすると、選択の変更ではなく、タイル グリッド パネル全体がスクロールします。

4

2 に答える 2

5

KeyPressHandlerを使用する代わりに、KeyDownHandlerを試してください。機能します。

        tileGrid.addKeyDownHandler(new KeyDownHandler() {
            @Override
            public void onKeyDown(KeyDownEvent event) {
                if (EventHandler.getKey().equalsIgnoreCase("Enter")){
                    openModal(tileGrid.getSelectedRecord());
                }
            }
        });

最新の3.0smartgwtビルドでテスト済み。

于 2012-09-26T11:40:22.927 に答える
0

@Mupparthy、 TextAreaItem の keyPressHandler() も実装しまし。また、削除キーとバックスペース キーのみを処理する必要があるという同じ要件もありました。私がやったことは、の部分を処理しないことです。すべての矢印キーを含む他のキーのデフォルト処理を自動的に行いました。うまくいかない場合は、スタンドアローンのコードを提供してください。

于 2012-07-10T06:58:39.893 に答える