Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用UIBinder两次_Java_Gwt - Fatal编程技术网

Java 使用UIBinder两次

Java 使用UIBinder两次,java,gwt,Java,Gwt,所以我有一个超级类Block,它扩展了Composite并使用UIBinder来制作布局 class Block extends Composite 我想为这个类创建两个子类,每个子类都有不同的图标集,必须添加这些图标。例如,InactiveBlock和ActiveBlock 我这里的问题是,我希望两个块(图标和一些按钮、标签)的布局也通过UIBinder进行,然后将UIBinder(及其事件)添加到主块中 显然我不能做像这样的事 class ActiveBlock extends Block

所以我有一个超级类Block,它扩展了Composite并使用UIBinder来制作布局

class Block extends Composite
我想为这个类创建两个子类,每个子类都有不同的图标集,必须添加这些图标。例如,InactiveBlock和ActiveBlock

我这里的问题是,我希望两个块(图标和一些按钮、标签)的布局也通过UIBinder进行,然后将UIBinder(及其事件)添加到主块中

显然我不能做像这样的事

class ActiveBlock extends Block, Composite
    add(initWidget(UIBinder.create(this)));
我怎样才能做到这一点


(ps如果我的问题不够清楚,请告诉我,以便我可以详细说明)

我会将其作为一个类,使用一个构造函数方法,将布尔值作为输入参数(active/inactive)

因此,您可以定义类中的所有公共字段和方法,如事件处理程序、图像等。 然后使用构造函数方法将元素和处理程序添加到基本小部件中。某些内容将添加到所有实例中,具体取决于它是否处于活动状态


在这种情况下,您不会得到重复的代码,使用uibinder仍有好处,最终您的代码将足够简单易读。

您可以创建两个单独的小部件,一个活动块和一个非活动块。或者您可以设置块,以便将图标传递到小部件中。然后,您可以创建两个块小部件并传入图标。问题是,在非活动块和活动块中,我都有相似之处。两者都有相同的事件图标。我最终会得到很多重复的代码。