Java 将数据从一个编写器发送到另一个编写器
我有两个zul和应用程序:Java 将数据从一个编写器发送到另一个编写器,java,zk,zul,Java,Zk,Zul,我有两个zul和应用程序:index.zul和popup.zul index.zul显示一个按钮,单击该按钮可打开一个窗口。在该窗口中,popup.zul显示一个文本框,用户可以在其中键入值。用户单击确认按钮后,窗口关闭 如何将输入的值返回到index.zul以在那里显示 IndexComposer.java public class IndexComposer extends SelectorComposer<Component> { private static final
index.zul
和popup.zul
index.zul
显示一个按钮,单击该按钮可打开一个窗口。在该窗口中,popup.zul
显示一个文本框,用户可以在其中键入值。用户单击确认按钮后,窗口关闭
如何将输入的值返回到index.zul
以在那里显示
IndexComposer.java
public class IndexComposer extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
@Wire
private Window popupWindow;
@Listen("onClick = #btn")
public void button() {
Window win = (Window) Executions.createComponents("popup.zul",
getSelf().getParent(),
null);
win.doModal();
}
}
public class PopupComposer extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
@Wire
private Window popupWindow;
@Wire
private Textbox txt;
@Listen("onClick = #close")
public void closePopup() {
System.out.println(txt.getValue());
popupWindow.detach();
}
}
公共类索引编译器扩展选择器编译器{
私有静态最终长serialVersionUID=1L;
@电线
私人窗口弹出窗口;
@听(“onClick=#btn”)
公共作废按钮(){
Window win=(Window)Executions.createComponents(“popup.zul”,
getSelf().getParent(),
无效);
win.doModal();
}
}
index.zul
<zk>
<div apply="co.id.test.master.test.IndexComposer">
<label id="lbl" />
<button id="btn" label="Open popup" />
</div>
</zk>
<zk xmlns:h="http://www.w3.org/1999/xhtml">
<window id="popupWindow" title="Coffee Order" border="normal" mode="modal">
<div apply="co.id.test.master.test.PopupComposer">
<textbox id="txt" />
<button id="close" label="close" />
</div>
</window>
</zk>
PopupComposer.java
public class IndexComposer extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
@Wire
private Window popupWindow;
@Listen("onClick = #btn")
public void button() {
Window win = (Window) Executions.createComponents("popup.zul",
getSelf().getParent(),
null);
win.doModal();
}
}
public class PopupComposer extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
@Wire
private Window popupWindow;
@Wire
private Textbox txt;
@Listen("onClick = #close")
public void closePopup() {
System.out.println(txt.getValue());
popupWindow.detach();
}
}
公共类PopupComposer扩展了SelectorComposer{
私有静态最终长serialVersionUID=1L;
@电线
私人窗口弹出窗口;
@电线
私有文本框;
@听(“onClick=#close”)
公共无效关闭弹出窗口(){
System.out.println(txt.getValue());
popupWindow.detach();
}
}
popup.zul
<zk>
<div apply="co.id.test.master.test.IndexComposer">
<label id="lbl" />
<button id="btn" label="Open popup" />
</div>
</zk>
<zk xmlns:h="http://www.w3.org/1999/xhtml">
<window id="popupWindow" title="Coffee Order" border="normal" mode="modal">
<div apply="co.id.test.master.test.PopupComposer">
<textbox id="txt" />
<button id="close" label="close" />
</div>
</window>
</zk>
一种方法是使用
EventQueues
。它们是一种跨应用程序的不同部分发送事件的方法,而不需要发送方和接收方必须知道的目标组件(如“普通”events.sendEvent()
)
下面是一个简单的示例,让您开始学习。请注意,我并没有对此进行测试,我使用了应用程序
范围,这是一种核选项。例如,DESKTOP
就足够了
公共类索引编译器
扩展选择器计算器
{
公共索引composer()
{
EventQueues.lookup(“MyEventQueueName”,EventQueues.APPLICATION,true)
.订阅(e->{
字符串数据=(字符串)e.getData();
//更新您的UI元素
});
}
@听(“onClick=#btn”)
公共作废按钮()
{
Window win=(Window)Executions.createComponents(“popup.zul”,getSelf().getParent(),null);
win.doModal();
}
}
公共类PopupComposer
扩展选择器计算器
{
@电线
私人窗口弹出窗口;
@电线
私有文本框;
@听(“onClick=#close”)
公共无效关闭弹出窗口()
{
popupWindow.detach();
EventQueues.lookup(“MyEventQueueName”,EventQueues.APPLICATION,true)
.publish(新事件(“,null,txt.getValue());
}
}
是的,在zk中获取文档
关于活动收听非常感谢先生回答并编辑我的问题。对不起,我的语法很糟糕,先生,你有关于zk的电子书吗?很高兴听到它有帮助。你可以找人帮忙。他们的在线文档通常非常全面。事件侦听器是解决此问题的另一种可能。不过,您可能需要对此进行详细说明。在目前的情况下,答案是没有帮助的。您可以添加一个小示例或至少一个简短的方法说明,以及文档链接。