我在Java中得到了以下错误消息:“无法从<code>StringProperty</code>转换为<code>ObservableValue
我正在使用TableView,并希望在TableColumn中添加数据。我有三个图表,它们都应该包含类产品的一个属性(名称、数量、价格)。
我在这一行中得到了错误:
sname.setCellValueFactory(cellData -> cellData.getValue().
相关代码:
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.util.Callback;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableColumn.CellEditEvent;
public class ViewShop extends BorderPane {
private Button add;
private Button remove;
private TextField name;
private TextField price;
private TextField count;
private VBox vbox;
private HBox hbox;
private TableView tv;
private TableColumn<Product, SimpleDoubleProperty> sprice;
private TableColumn<Product, SimpleStringProperty> sname;
private TableColumn <Product, SimpleIntegerProperty>scount;
private Label namelabel;
private Label pricelabel;
private Label countlabel;
private ListView<fpt.com.Product> list;
public ViewShop()
{
remove=new Button("Remove");
add=new Button("Add");
name=new TextField();
price=new TextField();
count=new TextField();
tv=new TableView<fpt.com.Product>();
sprice=new TableColumn<>("Preis");
sname= new TableColumn<>("Name");
scount=new TableColumn<>("Anzahl");
namelabel=new Label("Name");
pricelabel=new Label("Preis");
countlabel=new Label("Anzahl");
tv.getColumns().addAll(sname,sprice,scount);
hbox=new HBox();
vbox=new VBox();
list = new ListView<fpt.com.Product>();
//
// sname.setCellValueFactory(new Callback<CellDataFeatures<Product, SimpleStringProperty>, ObservableValue<SimpleStringProperty>>() {
// public ObservableValue<SimpleStringProperty> call(CellDataFeatures<Product, SimpleStringProperty> p) {
// // p.getValue() returns the Person instance for a particular TableView row
// return p.getValue().nameProperty();
//
// }
// });
sname.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
hbox.getChildren().addAll(remove, add);
vbox.getChildren().addAll(namelabel,name,pricelabel ,price, countlabel , count, hbox);
this.setRight(vbox);
this.setLeft(tv);
}
public void addEventHandleradd(EventHandler<ActionEvent> eventHandler) {
this.add.addEventHandler(ActionEvent.ACTION, eventHandler);
}
public void addEventHandlerremove(EventHandler<ActionEvent> eventHandler) {
this.remove.addEventHandler(ActionEvent.ACTION, eventHandler);
}
public String giveName()
{
return name.getText();
}
public String givePrice()
{
return price.getText();
}
public String giveCount()
{
return count.getText();
}
public ListView<fpt.com.Product> getList()
{
return list;
}
}
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.InvalidationListener;
import javafx.beans.property.DoubleProperty;
public class Product implements fpt.com.Product {
Long id;
SimpleStringProperty name;
SimpleIntegerProperty quantity;
SimpleDoubleProperty price;
public Product(String name, int quantity, double price)
{
this.name=new SimpleStringProperty(name);
this.quantity=new SimpleIntegerProperty(quantity);
this.price=new SimpleDoubleProperty(price);
}
@Override
public long getId() {
return id;
}
@Override
public void setId(long id) {
this.id=id;
}
@Override
public double getPrice() {
return this.price.get();
}
@Override
public void setPrice(double price) {
this.price.set(price);
}
@Override
public int getQuantity() {
return this.quantity.get();
}
@Override
public void setQuantity(int quantity) {
this.quantity.set(quantity);
}
@Override
public String getName() {
return this.name.get();
}
@Override
public void setName(String name) {
this.name.set(name);
}
@Override
public StringProperty nameProperty() {
return name;
}
@Override
public DoubleProperty priceProperty() {
return price;
}
@Override
public IntegerProperty quantityProperty() {
return quantity;
}
}
您的表格列的类型是错误的。他们应该是
private TableColumn<Product, Number> sprice;
private TableColumn<Product, String> sname;
private TableColumn <Product, Number> scount;
我已经创建getByBusinessDeviceID()方法和返回观察,但我想投观察列表。 公共观察getByBusinessDeviceID(整数id){Criteria cr=get会话(). createCriteria(Observation.class);cr.add(Restrictions.eq("business_device_id", id));cr.add(Order.desc
问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。
我正在从ViewModel中的Dialog片段更新LiveData值,但无法获取片段中的值。 视图模型: BaseViewModel: 对话框片段: 我从DialogFragment的xml文件中调用viewmodel的resendOTP(contactId:String)方法: 现在,每当我尝试从片段中调用resendOTP响应LiveData时,它都不会被调用: 所以我在这里做错了什么。 编辑
我试图运行Spring Cloud Sleuth并观察traceid,spantid oin日志。 我的配置如下,但当我调用requesti cnat时,会在日志中看到任何traceId或logId。 有人帮忙吗。谢谢 build.gradle Controller.java
问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可
问题内容: 我正在从String变量的Restful api获取数据,现在我想转换为JSON对象,但是在转换时会引发异常,这是我的问题。这是我的代码: 我的字符串包含 这是我想要在json中使用的字符串,但它向我显示了线程“ main”中的异常 问题答案: 的是本内的。您需要按层次分析JSON,以便能够正确获取数据。 注意:本示例使用类而不是。 正如“ Matthew”在他正在使用的注释中提到的那