gpt4 book ai didi

keyboard-shortcuts - 在 Vaadin 中使用快捷方式的问题

转载 作者:行者123 更新时间:2023-12-04 06:00:08 25 4
gpt4 key购买 nike

我在表中的快捷方式有一些问题。我必须自定义一些键:删除 - 用于删除行并输入以使表格可编辑/不可编辑,向上/向下箭头将表格模式从可编辑切换为不可编辑。我把我的表放在透明的面板中,并使用 Action.Handler 来捕捉键盘事件。但是,当我在 TextField、TextArea、Combobox 中写入时,我想将事件传播到该组件(处理删除键禁用使用它删除 TextField 中的文本,向上/向下键不允许使用键盘打开 Combobox)。我在 handleAction() 方法中看到了目标参数,但我现在不知道如何使用它。知道如何添加快捷方式而不是替换也很有趣。

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

任何想法如何做到这一点?

最佳答案

我不确定这是否是实现这一目标的最佳或最美丽的方式,但至少它有效:

textField.addListener(new BlurListener() {
@Override
public void blur(BlurEvent event) {
tablePanel.addActionHandler(deleteHandler);
}
});

textField.addListener(new FocusListener() {
@Override
public void focus(FocusEvent event) {
tablePanel.removeActionHandler(deleteHandler);
}
});

这些听众将负责 deleteHandler通过在用户每次进入该字段时禁用它并在用户离开该字段时启用它。

关于keyboard-shortcuts - 在 Vaadin 中使用快捷方式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com