テーブルのショートカットに問題があります。いくつかのキーをカスタマイズする必要があります: delete - 行を削除し、Enter でテーブルを編集可能/編集不可にし、上/下矢印でテーブルのモードを編集可能から編集不可に切り替えます。テーブルを透明なパネル内に配置し、Action.Handler を使用してキーボード イベントをキャッチします。しかし、私が TextField、TextArea、Combobox 内に書いているとき、私はイベントをこのコンポーネントに伝播したかった (TextField のテキストを削除するためにそれを使用して削除キーの無効化を処理し、上/下キーはキーボードで Combobox を開くことを許可しない)。handleAction() メソッドで target パラメーターを見ましたが、その使用方法がわかりません。置き換える代わりにショートカットを追加する方法を知ることも興味深い.
// adding table inside Panel
tablePanel = new Panel();
tablePanel.setStyleName(Panel.STYLE_LIGHT);
VerticalLayout tableElementsLayout = new VerticalLayout();
tablePanel.setContent(tableElementsLayout);
tablePanel.setSizeFull();
tableElementsLayout.setSizeFull();
vl.addComponent(tablePanel);
vl.setExpandRatio(tablePanel, 1.0f);
tableElementsLayout.add(table);
// --- adding keyboard handler
final Action actionDel = new ShortcutAction("Delete",
ShortcutAction.KeyCode.DELETE, null);
deleteHandler = new Action.Handler() {
@Override
public void handleAction(Action action, Object sender, Object target) {
// I want handle events here when I'm not inside TextField
}
@Override
public Action[] getActions(Object target, Object sender) {
return new Action[] { actionDel };
}
};
tablePanel.addActionHandler(deleteHandler);
それを行う方法はありますか?