gpt4 book ai didi

java - 带 UiBinder 的 GWT LazyPanel

转载 作者:行者123 更新时间:2023-12-01 15:25:21 26 4
gpt4 key购买 nike

我已经完成了 Tutorial on using the UiBinder并尝试使用本教程最后一部分中提到的 LazyPanel。

对我来说,教程似乎暗示只需将一个元素包装在 LazyPanel 中就足以使该东西工作。但是,当我尝试编译并运行该项目时,GWT 编译器会提示并告诉我

Rebind result 'com.google.gwt.user.client.ui.LazyPanel' cannot be abstract

如何通过 UiBinder 来使用 LazyPanel?我的配置有问题还是我遗漏了什么?

我正在使用 GWT 2.4(据我所知,这是最新的稳定版本)。

--

编辑:这是我正在使用的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:de.dfv.yankee.client.tabs.start"
xmlns:b="urn:import:de.dfv.yankee.client.tabs.bewerber" xmlns:f="urn:import:de.dfv.yankee.client.tabs.firmen"
xmlns:k="urn:import:de.dfv.yankee.client.tabs.kommunikation" xmlns:a="urn:import:de.dfv.yankee.client.tabs.admin"
xmlns:v="urn:import:de.dfv.yankee.client.tabs.abrechnung" xmlns:u="urn:import:de.dfv.yankee.client.tabs.user"
xmlns:svg="urn:import:org.vectomatic.dom.svg.ui">

<ui:with field="svgBundle" type="de.dfv.yankee.client.tabs.Tabs.SVGBundle" />

<g:TabLayoutPanel barUnit="PX" barHeight="30"
ui:field="tabs">

<g:tab>
<g:header>Start</g:header>
<s:StartTab ui:field="startTab" />
</g:tab>

<g:tab>
<g:header>Bewerber</g:header>
<b:BewerberSucheTab ui:field="bewerberSucheTab" />
</g:tab>

<g:tab>
<g:header>Bewerber Ergebnis</g:header>
<g:HTMLPanel>
<svg:SVGImage ui:field="svgImage" resource="{svgBundle.plz}" />
</g:HTMLPanel>
</g:tab>

<g:tab>
<g:header>Firmen</g:header>
<g:LazyPanel>
<f:FirmenSucheTab ui:field="firmenSucheTab" />
</g:LazyPanel>
</g:tab>

<g:tab>
<g:header>Firma Ergebnis</g:header>
<g:HTMLPanel>

</g:HTMLPanel>
</g:tab>

<g:tab>
<g:header>Kommunikation</g:header>
<k:KommunikationsTab ui:field="kommunikationsTab" />
</g:tab>

<g:tab>
<g:header>Abrechnung</g:header>
<v:VermittlungenTab ui:field="vermittlungenTab" />
</g:tab>

<g:tab>
<g:header>Userverwaltung</g:header>
<u:UserTab ui:field="userTab" />
</g:tab>

<g:tab>
<g:header>Admin</g:header>
<a:AdminTab ui:field="adminTab" />
</g:tab>

</g:TabLayoutPanel>

</ui:UiBinder>

最佳答案

编辑开始

这是正确的解决方案:

<g:TabLayoutPanel barHeight="2" barUnit="EM" width="250px" height="150px">
<g:tab>
<g:header>T1</g:header>
<t:MyLazyPanel1 />
</g:tab>
<g:tab>
<g:header>T2</g:header>
<t:MyLazyPanel2 />
</g:tab>
</g:TabLayoutPanel>

MyLazyPanel1:

public class MyLazyPanel1 extends LazyPanel {
Label l = new Label("label1");
@Override
protected Widget createWidget() {
System.out.println("now1");
return l;
}
}

MyLazyPanel2:

public class MyLazyPanel2 extends LazyPanel {
Label l = new Label("label2");
@Override
protected Widget createWidget() {
System.out.println("now2");
return l;
}
}

现在,当应用程序启动时,您可以看到“now1”显示在控制台中,而当您单击第二个选项卡时,“now2”显示。

编辑结束

这有效:

<g:TabLayoutPanel barHeight="2" barUnit="EM" width="250px" height="150px">
<g:tab>
<g:header>T1</g:header>
<t:MyLazyPanel>
<g:Label>ABC</g:Label>
</t:MyLazyPanel>
</g:tab>
<g:tab>
<g:header>T2</g:header>
<t:MyLazyPanel>
<g:Label>123</g:Label>
</t:MyLazyPanel>
</g:tab>
</g:TabLayoutPanel>

其中 MyLazyPanel 是:

public class MyLazyPanel extends LazyPanel {
@Override
protected Widget createWidget() {
return null;
}
}

但我不知道它是否真的很懒加载

...至少它可以编译并且结果看起来像expexted

看看这里:http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/LazyPanel.html

关于java - 带 UiBinder 的 GWT LazyPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10245763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com