ZK 8.5.0如何覆盖按钮小部件setLabel函数

时间:2019-02-18 01:34:26

标签: java override zk

“按钮”小部件的ZK setLabel()函数不起作用;当代码运行到foobutton.setLabel(mystring)之类的行时,该按钮将从浏览器中消失。

在Eclipse IDE中,如果将鼠标悬停在setLabel()函数上,IDE将显示以下消息:

  

如果更改了标签,则整个组件都将失效。因此,要进行智能更新,必须重写此方法。

使用ZK 8.5.0

在控制器类中,我声明:

 @Wire
 Button delSelectedMonitor;

在控制器内部,我实现了一个实现EventListener的类:

public class onClickHolderEditMode implements EventListener{

    public void onEvent(Event event) throws Exception {
        clickedDivEditMode = (Div) event.getTarget();
        clickedDivIdEditMode = clickedDivEditMode.getId().split(myUtil.monitorholderString)[1];

        String curName = getCamNameById(clickedDivIdEditMode);
        delSelectedMonitor.setLabel("DELETE:"+clickedDivIdEditMode+","+curName);
    }


}

事件绑定:

tmpdiv.addEventListener("onClick",  new onClickHolderEditMode());

我的期望是,当有人单击tmpdiv时,按钮delSelectedMonitor将根据tmpdiv的属性更改其标签。但是,正如我之前说的,按钮只是消失了。

https://www.zkoss.org/wiki/ZK_Client-side_Reference/General_Control/Widget_Customization 我已经在上面的网站链接上尝试过“指定您自己的窗口小部件类”部分,但是浏览器将处于等待状态。

请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我希望使用其他方法。

为什么不使用

<button label="@load(vm.xyz)" ... />

(我使用MVVM模式编写)并在点击操作中修改了变量xyz?

查看http://books.zkoss.org/zk-mvvm-book/8.0/syntax/load.html以获得实施指南。