Events ZK生成按钮,侦听器指向作曲家';s法
我正在使用ZK框架,我需要使用我正在实现的“ListItemRenderer”生成一个Events ZK生成按钮,侦听器指向作曲家';s法,events,onclick,event-listener,zk,Events,Onclick,Event Listener,Zk,我正在使用ZK框架,我需要使用我正在实现的“ListItemRenderer”生成一个。问题是,我需要在渲染器中生成一个按钮,指向带有onClick事件的作曲家的方法。代码如下: 祖尔 但结果是一样的 我想我需要向按钮或composer添加一个EventListener,但我不知道如何在composer和渲染器之间指向正确的方法 感谢您的帮助和/或指导。提前感谢您的回答。使此通用化的最佳方法是创建一个以作曲家为参数的构造函数。 当然,并不是每个编写器都有这个方法,所以您需要创建一个接口,在编写器
。问题是,我需要在渲染器中生成一个按钮,指向带有onClick
事件的作曲家的方法。代码如下:
祖尔
但结果是一样的
我想我需要向按钮或composer添加一个EventListener
,但我不知道如何在composer和渲染器之间指向正确的方法
感谢您的帮助和/或指导。提前感谢您的回答。使此通用化的最佳方法是创建一个以作曲家为参数的构造函数。
当然,并不是每个编写器都有这个方法,所以您需要创建一个接口,在编写器上设置什么
public interface ButtonListboxRenderer {
void onClickListboxButton(); // of course with return type and arguments you need.
}
然后,您的渲染器:
public class MyRenderer implements ListitemRenderer<MyItem> {
private final ButtonListboxRenderer composer;
public MyRenderer(ButtonListboxRenderer composer) {
this.composer = composer;
}
...
private void addButton(Listcell parent,
String label,
String id,
int index,
String width,
String forwardAction) {
Button btn = new Button(label);
btn.setId(id + "_" + index);
btn.setClass(id); // Second try
btn.setWidth(width);
// add eventlistener to the button and you can point to the method of the composer.
btn.setParent(parent);
}
}
公共类MyRenderer实现ListitemRenderer{
私有最终按钮ListBoxRenderer composer;
公共MyRenderer(ButtonListboxRenderer编写器){
this.composer=作曲家;
}
...
私有void addButton(列表单元格父项,
字符串标签,
字符串id,
整数索引,
字符串宽度,
字符串转发(操作){
按钮btn=新按钮(标签);
btn.setId(id+索引);
btn.setClass(id);//第二次尝试
btn.设置宽度(宽度);
//将eventlistener添加到按钮,您可以指向编写器的方法。
btn.setParent(父级);
}
}
你说得有道理。不应该是专用选择器或composer composer composer composer
而不是自定义界面?如何在渲染器中输入作曲家?我的意思是:你在ZUL中声明了渲染器,但是你需要指定编写器,不是吗?你可以在编写器中附加渲染器。如果使用selectorcomposer,则无法调用您的方法,因为selectorcomposer不知道您的自定义方法。
package pkg
public class MyRenderer implements ListitemRenderer<MyItem> {
@Override
public void render(Listitem item, MyItem data, int index) throws Exception {
// Some rendering...
Listcell actionCell = new Listcell();
this.addButton(actionCell, "Action 1", "btn_action1", index, "50%",
"onClick=mywin$MyComposer.action");
// another button (doesn't matter) ...
actionCell.setParent(item);
}
private void addButton(Listcell parent,
String label,
String id,
int index,
String width,
String forwardAction) {
Button btn = new Button(label);
btn.setId(id + "_" + index);
btn.setClass(id); // Second try
btn.setWidth(width);
ComponentsCtrl.applyForward(btn, forwardAction); // First try
btn.setParent(parent);
}
}
@Listen("onClick = .btn_action1")
public void actiion() {...}
public interface ButtonListboxRenderer {
void onClickListboxButton(); // of course with return type and arguments you need.
}
public class MyRenderer implements ListitemRenderer<MyItem> {
private final ButtonListboxRenderer composer;
public MyRenderer(ButtonListboxRenderer composer) {
this.composer = composer;
}
...
private void addButton(Listcell parent,
String label,
String id,
int index,
String width,
String forwardAction) {
Button btn = new Button(label);
btn.setId(id + "_" + index);
btn.setClass(id); // Second try
btn.setWidth(width);
// add eventlistener to the button and you can point to the method of the composer.
btn.setParent(parent);
}
}