java - 如何在 Vaadin 7 中制作一对单选按钮来表示真/假值但本地化文本?

标签 java radio-button vaadin vaadin7

我想要一双radio buttonsVaadin 7 表示 boolean 值,其中每个值都有文本显示,例如“Activity ”和“非 Activity ”。

screen shot of radio buttons "Active" and "Inactive" in group labeled "Filter By:".

最佳答案

Vaadin 7

此答案针对问题中提出的 Vaadin 7。请注意,Vaadin 8 使这很多变得更容易。参见 my other Answer .

选项组 小部件

在 Vaadin 7 中,单选按钮作为单个小部件处理,是 OptionGroup 的实例。 .该小部件包含多个 Items , 如果设置为 single item selection mode , 它们显示为一组单选按钮。

项目 ID 与项目

对我来说棘手的部分是理解 addItem 这样的命令有点用词不当。我们不传全Item实例。相反,我们传递一个对象作为 项目的 ID

addItem命令获取项目 ID,生成一个 Item 实例并将其返回给您。这已清楚地记录在案,但我花了一段时间才明白。您可能认为您有义务跟踪退回的元素。但是,不,您可以使用项目 ID 稍后检索或比较 OptionGroup 中的项目。

由于我们不需要跟踪退回的元素,我们可以调用 addItems (复数)命令使用一行代码为多个单选按钮创建多个项目。

boolean 值作为项目 ID

在我们的例子中,我们想使用 boolean 值作为我们的核心数据。我们需要对象而不是 boolean 基元,因为我们要传递对象。所以我们使用 Boolean类(class)。请注意 Boolean 类有几个方便的常量:Boolean.TRUEBoolean.FALSE

这些 boolean 对象可以用作项目 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 );
    }
} );

Lambda 语法

顺便说一下……在 Java 8 中,您可以使用新的替代项 Lambda syntax .如果您愿意,NetBeans 8 会建议并执行到 lambda 语法的转换。

this.activeSupplierRadio.addValueChangeListener(( Property.ValueChangeEvent event ) -> {
    Notification.show( "Radio Button" ,
            "You chose: " + event.getProperty().getValue().toString() ,
            Notification.Type.HUMANIZED_MESSAGE );
});

关于java - 如何在 Vaadin 7 中制作一对单选按钮来表示真/假值但本地化文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352420/

相关文章:

html - 需要在选中时更改自定义单选按钮的边框颜色

java - 如何从库添加 vaadin 主题

performance - 我应该使用 SmartGWT 还是 Vaadin?

java - 在android中将视频设置为SET WALLPAPER?

javascript - 单选按钮 'disappearing'

java - 不兼容的类型 : list<object> cannot be converted to List<Usuario>

javascript - 获取一组单选按钮值

java - Vaadin 中必填文本字段中的只读属性会删除星号 (*)

java - Spring Boot从服务类调用方法的问题

java - try block 内声明的变量无法解析