启用/禁用wicket

时间:2017-06-18 19:30:21

标签: java radio-button wicket isenabled

我是wicket开发的初学者。我有一个关于弹出对话框的问题。单击按钮时会触发此对话框。

此对话框在下方包含复选框(接受条款)和多个单选按钮两个按钮,一个取消< / strong>和另一个接受

我的问题是我需要确保,我同时选中了复选框和一个收音机来设置按钮“接受”以启用状态,否则它应该被密封(启用=假)。

问题是单选按钮位于不同的文件中(它们位于其他文件的面板内,我们称之为“CancellationRadioButtons”)。我设法在主对话框中正确渲染它们(在“MainPanel”中执行add(cancellationradioButtons))。

问题是,如果两个元素:复选框单选按钮包含相应的模型,我该如何确保两者都被选中(复选框和一个单选按钮) ),我的意思是你如何用 CancellationRadioButtons 传达 MainPanel ,反之亦然?

例如,触发对话框时,默认情况下未选择任何内容,因此“接受”按钮将被密封。如果我单击其中一个单选按钮,“接受”按钮将保持密封,直到我选中该复选框。如果我选中复选框并且没有选择单选按钮,则会发生同样的情况。

我有两种元素的模型,但我不知道如何沟通它们。我在Accept按钮中有一个SetEnabled方法(现在只在勾选复选框时启用),但我不知道如何在两个条件之间进行联接(选中Checkbox.checked和radiobutton)

我想在这里发布代码以使其更简单,但我不能因为公司政策,而且我很难在我的本地电脑上复制相同的对话框,因为它已经完成,我'我只是在那里修理东西。

如何继续这一点的任何想法,一些提示和简单的例子将不胜感激!

1 个答案:

答案 0 :(得分:1)

这是像Wicket这样的有状态框架的强大一面!你说复选框和单选按钮有自己的模型。解决问题的最简单方法是将这些模型也用于“接受”按钮,这样它就可以在onConfigure()中使用它来决定调用this.setEnabled(...)时要使用的值。

您可以使用Wicket的CompoundPropertyModel作为对话框,每个子组件都可以使用它的属性。 “接受”按钮将使用复合模型对象来查看所有属性的值。

或者您可以在对话框构造函数中创建当前单独的模型,并仅将它们传递给需要它们的组件。