【问题标题】:Open upload window by click on MenuItem通过单击 MenuItem 打开上传窗口
【发布时间】:2014-12-02 22:04:55
【问题描述】:

我想通过单击 MenuItem 从上传元素打开上传窗口。这可能吗? 另一个想法是在 MenuBar 中添加上传元素,但我认为这是不可能的,对吧?

感谢您的帮助!

【问题讨论】:

    标签: java menu upload vaadin


    【解决方案1】:

    也许一点 javascript 可以帮助你:

    Upload upload = new Upload();
    upload.setImmediate(true); // if you want to start upload after selection
    upload.addStyleName("my-upload");
    MenuBar menuBar = new MenuBar();
    menuBar.addItem("Caption", new Command() {
        private static final long serialVersionUID = 1L;
    
        @Override
        public void menuSelected(MenuItem selectedItem) {
            JavaScript.getCurrent().execute(
                "document.getElementsByClassName('gwt-FileUpload')[0].click()");
        }
    });
    addComponent(upload);
    addComponent(menuBar);
    

    如果你想隐藏上传:

    .v-slot-my-upload {
        display: none;
    }
    

    【讨论】:

    • 谢谢!为了隐藏上传,我使用了.v-upload { display: none; visibility: hidden;}。你的提示不起作用:(
    • 浏览器认为 JavaScript 调用是恶意的并阻止它。
    【解决方案2】:

    MenuBar、MenuItem、Window 和 Upload 的最简单用例,留给你布局:

        MenuBar menuBar = new MenuBar();
        final Window window = new Window();
        window.setContent(new Upload());
        menuBar.addItem("Caption", new Command()
        {
            @Override
            public void menuSelected(MenuItem selectedItem)
            {
                UI.getCurrent().addWindow(window);
            }
        });
    

    【讨论】:

    • 感谢您的回答!是否可以直接打开fileChoose窗口而不用另一个窗口?
    • 一种选择是将上传直接添加到布局中,并通过 CSS 对其进行样式化,使其看起来像常规的 com.ui.vaadin.Button 并在视觉上删除默认上传按钮,例如: .gwt-FileUpload { display:没有; }
    • 但我无法向菜单栏添加按钮 :(
    • 之前的评论是关于 css 黑客上传看起来像 MenuBar.MenuItem。
    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多