테이블의 바로 가기에 몇 가지 문제가 있습니다. 일부 키를 사용자 정의해야합니다. 삭제 - 행을 제거하고 표를 편집 가능/편집 불가능으로 만들기 위해 위/아래 화살표를 사용하여 표의 모드를 편집 가능에서 편집 불가능으로 전환합니다. 내 테이블을 투명한 Panel 안에 넣고 Action.Handler를 사용하여 키보드 이벤트를 잡습니다. 그러나 TextField, TextArea, Combobox 내부에이 컴포넌트에 이벤트를 전달하려고 할 때 DeleteFile 키를 사용하여 TextField의 텍스트를 삭제하고 up/down 키를 사용하면 키보드로 열린 ComboBox를 열 수 없습니다. handleAction() 메서드에서 target 매개 변수를 보았지만 지금은 사용 방법이 없습니다. 바꾸기 대신 바로 가기를 추가하는 방법을 알고 흥미 롭습니다.Vaadin에서 바로 가기 사용시 문제
// 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);
아이디어가 있습니까? 나는 이것이 최고의 또는이를 달성 할 수있는 가장 아름다운 방법입니다 있는지 확실하지 않습니다,하지만 적어도 작동
도움을 드리고 싶지만 문제를 완전히 이해하지 못했습니다. Book of Vaadin : https://vaadin.com/book/-page/advanced.shortcuts.html을 읽으셨습니까? Vaadin 개발을위한 훌륭한 안내서입니다. – miq
빠른 답장을 보내 주셔서 감사합니다. 나는이 책의 일부를 완전히 읽고 그것에 따라 제 코드를 만들었습니다. 나는 일반적으로 문제를 설명하려고 노력할 것이다. 안에 Panel과 TextField가 있다고 상상해보십시오. Action.Handler를 사용하여 Panel에서 DELETE 키를 처리합니다. TextField로 기호를받는이 블록 (키보드로 기호를 삭제할 수 없습니다). 내가 액션을 이해하는 한. 핸들러는 키 조작을 완전히 대체한다. 하지만 TextField와 Action.Handler가 모두 키 누르기를받을 수 있도록 바꾸지 않는 바로 가기를 추가하고 싶습니다. –