Google chrome 瓦丁阻力元件

Google chrome 瓦丁阻力元件,google-chrome,firefox,tomcat,vaadin,Google Chrome,Firefox,Tomcat,Vaadin,我们正在使用Vaadin创建一个web应用程序。我们的应用程序包含许多拖放功能 我们有一个可以拖动的物体。 我们也可以点击它打开它的菜单 有时,当我们单击该项时,它的行为就好像被拖动一样。 发生这种情况时,我们无法打开其菜单,因为该组件位于dragmode中 所有具有相同功能的组件的行为都是相同的,但是在开发环境中,当我们重新启动tomcat时,问题消失了吗 我注意到,当组件开始向我显示这种行为时,FireFox中的网页的行为很好?一个简单的解决方案是引入一个拖动模式/编辑按钮,允许用户打开和关

我们正在使用Vaadin创建一个web应用程序。我们的应用程序包含许多拖放功能

我们有一个可以拖动的物体。 我们也可以点击它打开它的菜单

有时,当我们单击该项时,它的行为就好像被拖动一样。 发生这种情况时,我们无法打开其菜单,因为该组件位于dragmode中

所有具有相同功能的组件的行为都是相同的,但是在开发环境中,当我们重新启动tomcat时,问题消失了吗


我注意到,当组件开始向我显示这种行为时,FireFox中的网页的行为很好?

一个简单的解决方案是引入一个拖动模式/编辑按钮,允许用户打开和关闭拖动模式

这意味着用户可以与组件交互,然后在希望拖动组件时进入“拖动模式”。因此,减少了尝试与组件交互时的挫折感,而组件开始“拖动”

我在下面创建了一个简单的示例程序进行尝试

public class DemoUI extends UI {

    HorizontalSplitPanel splitPanel;
    DragAndDropWrapper wrapperA;
    DragAndDropWrapper wrapperB;

    DragAndDropWrapper splitPaneWrapper;
    Button buttonA;
    Button buttonB;
    private boolean isDragMode = false;

    @WebServlet(value = "/*", asyncSupported = true)
    @VaadinServletConfiguration(productionMode = false, ui = DemoUI.class)
    public static class Servlet extends VaadinServlet {
    }

    @Override
    protected void init(VaadinRequest request) {

        final HorizontalSplitPanel splitPanel = new HorizontalSplitPanel();

        Button buttonA = new Button("Button A");
        Button buttonB = new Button("Button B");

        final DragAndDropWrapper wrapperA = new DragAndDropWrapper(buttonA);
        final DragAndDropWrapper wrapperB = new DragAndDropWrapper(buttonB);

        final VerticalLayout leftPanel = new VerticalLayout();
        final VerticalLayout rightPanel = new VerticalLayout();

        DragAndDropWrapper leftPanelWrapper = new DragAndDropWrapper(leftPanel);
        DragAndDropWrapper rightPanelWrapper = new     DragAndDropWrapper(rightPanel);

        buttonA.addClickListener(new ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                Notification.show("Button A was clicked");

            }

        });

        buttonB.addClickListener(new ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                Notification.show("Button B was clicked");

            }

        });

        leftPanelWrapper.setDropHandler(new DropHandler() {

            @Override
            public void drop(DragAndDropEvent event) {
                leftPanel.addComponent(event.getTransferable().getSourceComponent());

            }

            @Override
            public AcceptCriterion getAcceptCriterion() {
                return AcceptAll.get();
            }

        });

        rightPanelWrapper.setDropHandler(new DropHandler() {

            @Override
            public void drop(DragAndDropEvent event) {
                rightPanel.addComponent(event.getTransferable().getSourceComponent());

            }

            @Override
            public AcceptCriterion getAcceptCriterion() {
                return AcceptAll.get();
            }

        });

        final Button dragMode = new Button("Drag Mode On");

        dragMode.addClickListener(new ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                isDragMode = !isDragMode;
                if (isDragMode) {
                    dragMode.setCaption("Drag Mode Off");
                    wrapperA.setDragStartMode(DragStartMode.WRAPPER);
                    wrapperB.setDragStartMode(DragStartMode.WRAPPER);
                } else {
                    dragMode.setCaption("Drag Mode On");
                    wrapperA.setDragStartMode(DragStartMode.NONE);
                    wrapperB.setDragStartMode(DragStartMode.NONE);
                }

            }

        });

        leftPanel.setSizeFull();
        rightPanel.setSizeFull();
        leftPanelWrapper.setSizeFull();
        rightPanelWrapper.setSizeFull();

        leftPanel.addComponent(wrapperA);
        rightPanel.addComponent(wrapperB);

        splitPanel.setFirstComponent(leftPanelWrapper);
        splitPanel.setSecondComponent(rightPanelWrapper);
        splitPanel.setSizeFull();

        VerticalLayout layout = new VerticalLayout();
        layout.addComponent(dragMode);
        layout.addComponent(splitPanel);
        layout.setSizeFull();

        this.setContent(layout);
        this.setSizeFull();
}


祝你一切顺利。

我的回答对你有帮助吗?嘿@KevinPaton事实上我正忙着做一些其他事情,但实际上为拖动模式设置另一个按钮并不适合我们,但直到现在才发现真正的问题,为什么会发生这种情况……是的,我知道这并不理想,我目前面临着类似的情况。希望你得到修复@KevinPaton thnx感谢你的努力…但当你面临同样的问题时,这是一些瓦丁的错误吗?还是在我们这边