GWT 把FileUpload控件替换为一个按钮实现

      构造方法里

        Panel panel = new HorizontalPanel();
        final FormPanel form = new FormPanel();
        final FileUpload upload = new FileUpload();
        form.setEncoding(FormPanel.ENCODING_MULTIPART);
        form.setMethod(FormPanel.METHOD_POST);
        form.setAction(GWT.getModuleBaseURL()
                            + "fileupload");
        form.setWidget(upload);
        upload.setVisible(false);
        upload.setName("uploadFormElement");
        panel.add(form);


        final Label button = new Label();
        button.setWidth("116px");
        button.setStyleName("uploadFormButton");
        button.addClickListener(new ClickListener() {
            public void onClick(Widget pSender) {
                jsClickUpload(upload.getElement());
               
            }
        });
        upload.addChangeHandler(new ChangeHandler() {
            
            @Override
            public void onChange(ChangeEvent event) {
                form.submit();
                System.out.println(upload.getFilename());
            }
        });
      
        form.addFormHandler(new FormHandler() {
            @Override
            public void onSubmit(FormSubmitEvent event) {
                System.out.println(" ==== onSubmit ====");
                if (upload.getFilename()
                              .length() == 0) {
                    event.setCancelled(true);


                }
            }


            @Override
            public void onSubmitComplete(FormSubmitCompleteEvent event) {
                // TODO Auto-generated method stub
                System.out.println(" ==== onSubmitComplete ====");
                feedbackLabel.setText("上传完成");
                System.out.println(event.getResults());
            }
        });
        
        panel.add(button);
        add(panel,624,0);



外面加上


  native void jsClickUpload(Element pElement) /*-{
pElement.click();
    }-*/;

你可能感兴趣的:(GWT 把FileUpload控件替换为一个按钮实现)