Java JTable中所选元素的数量可以绑定吗?

Java JTable中所选元素的数量可以绑定吗?,java,swing,binding,netbeans,javabeans,Java,Swing,Binding,Netbeans,Javabeans,我希望有一个标签或文本字段,其中的数字表示在JTable中选择的行数。我正在使用Netbeans,并尝试了绑定属性。。。JTable上有一个名为selectedElements的属性。。。好像 jTable[${selectedElements.length}] 或 如果绑定到label/textfield的text属性,则应执行此操作。当然,它不起作用。是否有一个绑定表达式可用于获取选定元素的数量?您可以使用获取选定行的数量。 要将标签绑定到此列表,可以将列表选择侦听器添加到列表选择模型,并

我希望有一个标签或文本字段,其中的数字表示在JTable中选择的行数。我正在使用Netbeans,并尝试了绑定属性。。。JTable上有一个名为selectedElements的属性。。。好像

jTable[${selectedElements.length}]


如果绑定到label/textfield的text属性,则应执行此操作。当然,它不起作用。是否有一个绑定表达式可用于获取选定元素的数量?

您可以使用获取选定行的数量。 要将标签绑定到此列表,可以将列表选择侦听器添加到列表选择模型,并且当值更改时,可以刷新标签上的文本


我不知道如何使用Netbeans来实现这一点,但您可以使用标准的Swing组件来实现这一点。

您可以使用。 要将标签绑定到此列表,可以将列表选择侦听器添加到列表选择模型,并且当值更改时,可以刷新标签上的文本


我不知道如何使用Netbeans来实现这一点,但您可以使用标准的Swing组件来实现这一点。

我本来希望第二个选项可以工作,但没有。原因可能如下(来自api文档属性)

通过 ELProperty遵循javabean规范,包括firing 财产变更通知;否则,ELProperty将无法响应 改变

列表的size()方法不符合这两个条件

一种方法是插入转换器(手动编码,永远不会使用Netbeans:-)

自动绑定大小绑定=
Bindings.createAutoBinding(UpdateStrategy.READ,
表,ELProperty.create(“${selectedElements}”),
countLabel,BeanProperty.create(“文本”)
);
转换器,字符串>(){
@凌驾
公共字符串转换转发(Listvalue){
if(值!=null){
返回“”+value.size();
}
返回“空”;
}
@凌驾
公共列表(字符串值){
返回null;
}
};
sizeBinding.setConverter(转换器);

另一种可能是实现和连接BeanAdaperProvider/-Factory,正如同一文档中提到的那样,它没有尝试过。

我本以为第二种方法可以工作,但没有。原因可能如下(来自api文档属性)

通过 ELProperty遵循javabean规范,包括firing 财产变更通知;否则,ELProperty将无法响应 改变

列表的size()方法不符合这两个条件

一种方法是插入转换器(手动编码,永远不会使用Netbeans:-)

自动绑定大小绑定=
Bindings.createAutoBinding(UpdateStrategy.READ,
表,ELProperty.create(“${selectedElements}”),
countLabel,BeanProperty.create(“文本”)
);
转换器,字符串>(){
@凌驾
公共字符串转换转发(Listvalue){
if(值!=null){
返回“”+value.size();
}
返回“空”;
}
@凌驾
公共列表(字符串值){
返回null;
}
};
sizeBinding.setConverter(转换器);
另一种可能是实现和连接BeanAdapterProvider/-Factory,正如同一文档中提到的,没有尝试

jTable[${selectedElements.size}]
    AutoBinding sizeBinding = 
        Bindings.createAutoBinding(UpdateStrategy.READ,
            table, ELProperty.create("${selectedElements}"),
            countLabel, BeanProperty.create("text")
            );
    Converter<List<?>, String> converter = new Converter<List<?>, String>() {

        @Override
        public String convertForward(List<?>value) {
            if (value !=  null) {
                return "" + value.size();
            }
            return "empty";
        }

        @Override
        public List<?> convertReverse(String value) {
            return null;
        }

    };
    sizeBinding.setConverter(converter);