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