大佬教程收集整理的这篇文章主要介绍了gridview – Vaadin Grid的监听器进入/退出编辑模式?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
不幸的是我找不到正确的钩子.我得到的最接近的是SELEctionListener,但它与编辑模式不匹配.
grid.addSELEctionListener(new SELEctionListener() { ... } );
当网格进入编辑模式时,有没有办法获得事件?
对于Vaadin 8,您可以扩展Grid并返回一个自定义编辑器(据我所知,目前还没有实现用于捕获start事件的侦听器).
此外,您可以添加取消&保存监听器(已由框架实现)以查看编辑器是否已关闭.
CustomEditor.java
public class CustomEditor<T> extends EditorImpl<T> { private EventRouter eventRouter = new EventRouter(); public CustomEditor(PropertySet<T> propertySet) { super(propertySet); } public Registration addStartListener(EditorStartListener<T> listener) { return eventRouter.addListener(EditorStartEvent.class,listener,EditorStartListener.class.getDeclaredMethods()[0]); } @Override protected void doEdit(T bean) { super.doEdit(bean); fireToggleEvent(bean); } private void fireToggleEvent(T bean) { eventRouter.fireEvent(new EditorStartEvent<>(this,bean)); } }
EditorStartListener.java
@FunctionalInterface public interface EditorStartListener<T> extends serializable { void onEditorStart(EditorStartEvent<T> event); }
EditorStartEvent.java
public class EditorStartEvent<T> extends EventObject { private T bean; public EditorStartEvent(Editor<T> editor,T bean) { super(editor); this.bean = bean; } @SuppressWarnings("unchecked") @Override public Editor<T> getsource() { return (Editor<T>) super.getsource(); } public Grid<T> getGrid() { return getsource().getGrid(); } public T getBean() { return bean; } }
CustomGrid.java
public class CustomGrid<T> extends Grid<T> { private PropertySet<T> propertySet; public CustomGrid() { super(); } // Other constructors omitted for clarity @Override protected void setPropertySet(PropertySet<T> propertySet) { this.propertySet = propertySet; super.setPropertySet(propertySet); } @Override protected Editor<T> createEditor() { return new CustomEditor<T>(propertySet); } }
用法:
Grid<Person> grid = new CustomGrid<>(); CustomEditor<Person> editor = (CustomEditor<Person>) grid.getEditor(); editor.setEnabled(true); editor.addStartListener(event -> System.out.println("Editor started!"));
对于Vaadin 7
对于Vaadin 7,您可以覆盖方法doEditItem()并使用与上面相同的方法在此处添加侦听器:
EditStartListener.java
public interface EditStartListener extends serializable { public static final Method EDIT_START_METHOD = ReflectTools.findMethod(EditStartListener.class,"editStart",EditStartEvent.class); public void editStart(EditStartEvent event); }
EditStartEvent.java
public class EditStartEvent extends Component.Event { public EditStartEvent(Component sourcE) { super(sourcE); } public Grid getGrid() { return (Grid) getsource(); } }
CustomGrid.java
public class CustomGrid extends Grid { public void addEditStartListener(EditStartListener listener) { addListener(EditStartEvent.class,EditStartListener.EDIT_START_METHOD); } @Override protected void doEditItem() { super.doEditItem(); fireEvent(new EditStartEvent(this)); } }
以上是大佬教程为你收集整理的gridview – Vaadin Grid的监听器进入/退出编辑模式?全部内容,希望文章能够帮你解决gridview – Vaadin Grid的监听器进入/退出编辑模式?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。