JavaFX中String无法转换成ObservableValue怎么办

https://www.it1352.com/1001336.html

方法getDestiny(),因为它表示返回特定航班的命运因为很明显我不能使用最后一条指令,它说"无法从String转换为ObservableValue",但我真的不知道如何解决它以便能够显示该列的命运。谢谢大家。

 

解决方案

 

Ad by Valueimpression

根据 Javadocs , setCellValueFactory(...)期望 Callback< CellDataFeatures< Flight,String>,ObservableValue< String>> ,即采用 CellDataFeatures< Flight,String> 作为参数,并产生 ObservableValue< String> 。


 

正如错误消息所示,您的函数求值为字符串( cellData.getValue ()。getDestiny()),这是不正确的类型。


 

根据您的实际要求,您有两种选择。


 

您可以动态创建类型正确的东西:最简单的方法是使用 ReadOnlyStringWrapper 


 

  destinoCol.setCellValueFactory(cellData  - > new ReadOnlyStringWrapper(cellData.getValue()。getDestiny())); 
  


 

这将显示正确的值,但不会很好地"连线"到该属性飞行物体。如果您的表是可编辑的,编辑将不会自动传播回基础对象,并且从其他地方对基础对象的更改将不会自动更新到表中。


 

如果你需要这个功能(这可能是一个更好的方法),你应该实现你的模型类 Flight 来使用 JavaFX属性


 

  public class Flight {
 
 private final StringProperty destiny = new SimpleStringProperty(); 
 
 public StringProperty destinyProperty(){
 return destiny; 
} 
 
 public final String getDestiny(){
 return destinyProperty()。get(); 
} 
 
 public final void setDestiny(String destiny){
 destinyProperty()。set(destiny); 
} 
 
 //同样适用于其他房产... 
} 
  


 

然后你可以做


 

  destinoCol.setCellValueFactory(cellData  - > cellData.getValue()。destinyProperty ()); 
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值