2012-02-28 76 views
3

有没有可以用于GWT的进度条小部件,还是我必须自己做?我试图在google-web-toolkit-incubator,gwtupload和upload4gwt中使用进度条,没有任何运气。GWT进度条

回答

6

一些代码:

import com.google.gwt.i18n.client.NumberFormat; 
import com.google.gwt.user.client.DOM; 
import com.google.gwt.user.client.Element; 
import com.google.gwt.user.client.ui.Widget; 

public class ProgressBar extends Widget { 
    private static final String PERCENT_PATTERN = "#,##0%"; 
    private static final NumberFormat percentFormat = NumberFormat.getFormat(PERCENT_PATTERN); 

    private final Element progress; 
    private final Element percentageLabel; 
    private double percentage; 
    private final double max; 

    public ProgressBar(double value, double max) { 
     assert max != 0; 
     this.max = max; 

     progress = DOM.createElement("progress"); 
     progress.setAttribute("max", Double.toString(max)); 
     progress.setAttribute("value", Double.toString(value)); 

     percentageLabel = DOM.createElement("span"); 
     percentage = value/max; 
     percentageLabel.setInnerHTML(percentFormat.format(percentage)); 
     progress.insertFirst(percentageLabel); 

     setElement(progress); 
    } 

    public void setProgress(double value) { 
     progress.setAttribute("value", Double.toString(value)); 
     percentage = value/max; 
     percentageLabel.setInnerHTML(percentFormat.format(percentage)); 
    } 

} 
+0

兄弟!请指导我如何称呼它。以及如何使用。 – Cataclysm 2013-06-10 10:40:56

+1

谢谢!我换了旧的gwt-incubator ProgressBar,并与我的应用程序的文件上传(在服务器端使用Apache Commons FileUpload)一起工作。两项调整:(1)对于GWT 2.6.1,由于com.google.gwt.user.client.Element已过时导入com.google.gwt.dom.client.Element; (2)我添加了一个默认构造函数 - public ProgressBar(){this(0.0,100.0); } – Thad 2014-07-24 22:45:00

2

我不知道您的要求,但HTML5支持进度条标签。下面是一个简单的例子:

下面是HTML:

<progress id="bar" value="0" max="100"> 
    <span id="fallback"> 
     <p>Your browser does not support progress tag.</p> 
    </span> 
</progress> 

和脚本,看看它是如何加载

<script> 
    window.onload = function() { 

     var bar = document.getElementById("bar"), 
     loaded = 0; 

     var load = function() { 
      loaded += 10; 
      bar.value = loaded; 

      if(loaded == 100) { 
       clearInterval(dummyLoad); 
      } 
     }; 

     var dummyLoad = setInterval(function() { 
      load(); 
     } ,1000); 
    } 
</script> 

其他信息:http://www.w3.org/wiki/HTML/Elements/progress 来源:http://www.onlywebpro.com/2011/09/09/html5-progress-bar/

1

这里有一个HTML5进度条例如:

在你ui.xml:

<progress ui:field="loadingProgress" style="width:100%" value="0" max="100"></progress> 

在您的代码:

@UiField Element loadingProgress; 

loadingProgress.setPropertyInt("value", 50); 
+0

这是整合到我的ui.xml文件中的最简单的一个 – Stevko 2017-09-27 23:53:21