Bas*_*que 6 java radio-button vaadin vaadin7
我想在Vaadin 7中使用一对单选按钮来表示布尔值,其中每个值都有一个文本显示,例如"活动"和"非活动".
Bas*_*que 11
本答复针对问题中提出的Vaadin 7.请注意,Vaadin 8使这更容易.看到我的另一个答案.
OptionGroup
窗口小部件在Vaadin 7中,单选按钮作为单个小部件处理,是OptionGroup的一个实例.窗口小部件包含多个项目,如果设置为单项目选择模式,它们将显示为一组单选按钮.
对我来说棘手的部分是理解这些命令addItem
有点用词不当.我们没有传递完整的Item
实例.相反,我们传递一个对象作为项目的id.
该addItem
命令获取项ID,生成一个Item
实例并将其返回给您.这有明确记录,但需要一段时间让我沉沦.您可能认为您有义务跟踪返回的项目.但是,不,您可以使用item id稍后检索或比较OptionGroup中的项目.
由于我们不需要跟踪返回的项目,我们可以调用addItems
(复数)命令使用一行代码为多个单选按钮创建多个项目.
在我们的例子中,我们希望使用布尔值作为核心数据.我们需要对象而不是boolean
基元,因为我们正在传递对象.所以我们使用这个Boolean
类.请注意,布尔类有几个方便的常量:Boolean.TRUE
&Boolean.FALSE
.
这些布尔对象可用作项ID.
一些使用Vaadin 7.3.2的示例代码.
this.activeCustomerRadio = new OptionGroup( "Filter By:" ); // Pass a string used as caption (title) of the group of radio buttons.
this.activeCustomerRadio.addItems( Boolean.TRUE , Boolean.FALSE ); // Pass item ids to be used in constructing Item objects on our behalf.
this.activeCustomerRadio.setItemCaption( Boolean.TRUE , "Active" ); // Specify a textual label rather than default generated value "true" & "false".
this.activeCustomerRadio.setItemCaption( Boolean.FALSE , "Inactive" );
this.activeCustomerRadio.setValue( Boolean.FALSE ); // Specify which radio button is selected by default.
// Add a listener to react to user selection.
this.activeCustomerRadio.addValueChangeListener( new Property.ValueChangeListener()
{
@Override
public void valueChange ( Property.ValueChangeEvent event )
{
Notification.show( "Radio Button" ,
"You chose: " + event.getProperty().getValue().toString() ,
Notification.Type.HUMANIZED_MESSAGE );
}
} );
Run Code Online (Sandbox Code Playgroud)
顺便说一下......在Java 8中,您可以使用新的备用Lambda语法.如果您愿意,NetBeans 8将建议并执行到lambda语法的转换.
this.activeSupplierRadio.addValueChangeListener(( Property.ValueChangeEvent event ) -> {
Notification.show( "Radio Button" ,
"You chose: " + event.getProperty().getValue().toString() ,
Notification.Type.HUMANIZED_MESSAGE );
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4787 次 |
最近记录: |