创建自定义小部件

时间:2011-07-15 11:15:39

标签: gwt smartgwt gwt-ext

如何从Javascript创建窗口小部件。例如,我需要创建一个简单的按钮或表。我有一些第三个问题 绘制表格的javascripts。现在如果我想通过使用那些javascript创建GWT小部件我应该先做什么? 像GWTExt,SmartGWT这样的其他框架如何使用自定义小部件?他们是从头开始还是重用它们 GWT小部件功能?就像我想以自己的风格创建一个表一样,我是否需要继承GWT表?可以任何人 举一个例子或示例代码如何从javascript创建一个小部件?如果我的问题有误,请原谅。

示例:

Mytable table = new Mytable(2,3)。然后它应该绘制我自己的表,其中包含2列和3行

2 个答案:

答案 0 :(得分:3)

你在这里问了很多问题。在您的情况下,您应该创建尽可能多的问题,以便在原始帖子中有qustion标记。

关于第一个问题,请查看JSNI

编辑:所以okrasz给了你一些参考资料。从我这边开始,我将尝试使用JSNI来帮助您的示例(因为您要求将现有的js绑定到GWT)。

假设您将MyTable定义为

<script type="text/javascript">
    MyTable = function(a,b){
        this.a = a;
        this.b = b;
    };
</script>

并且您的js文件名为mytable.js

现在,我们需要将它作为一个组件。在GWT库项目的.java文件中创建一个这样的类:

public class MyTable extends JavaScriptObject {
    protected MyTable(){}
    public static native MyTable create(double a, double b) /*-{
        return new MyTable(a,b);
    }-*/;
    public final native double getA() /*-{
        return this.a;
    }-*/;

    public final native double getB() /*-{
        return this.b;
    }-*/;
}

将原始js文件添加到资源中,并将script节点添加到gwt.xml模块中,如下所示:

<module>
  <inherits name="com.google.gwt.core.Core"/>
  <script src="path/to/mytable.js"/>
  <source path="client"/>
  <public path="public"/>
</module>

这就是它。我可能会忘记一些东西,但你可以参考任何你需要做同样事情的oss项目。例如,看一下swfupload-gwt项目源代码。

答案 1 :(得分:1)

以下是create custom widgets的文档。不幸的是,他们主要谈论从现有的小部件创建复合小部件。但是为了从头开始创建它们,他们建议在创建Button时用Java编写 - 这里是Button source code以供参考。对于JS中的小部件,他们建议source code for TextBox

还有一篇关于创建小部件的文章:http://davidmaddison.blogspot.com/2009/01/creating-gwt-component.html