我想使用TableView来显示用户创建的一些数据,但不幸的是,某些特定的列内容不显示。有问题的列是一种两级豆,或者以另一种方式,一个裹着豆:在JavaFX中显示包装的bean属性TableView
getter和setter方法是中省略
public class ItemBean {
private VisaoProdutoPreVenda produto;
private BigDecimal quantidade = new BigDecimal("0.0");
private BigDecimal valorUnitario = new BigDecimal("0.0");
private BigDecimal valorDesconto = new BigDecimal("0.0");
private BigDecimal valorAcrescimo = new BigDecimal("0.0");
private BigDecimal aliquotaDesconto = new BigDecimal("0.0");
private BigDecimal aliquotaAcrescimo = new BigDecimal("0.0");
private Integer ordem;
private String idVendedor;
private Boolean fracionado = false;
private boolean cancelado = false;
private String status = "AB";
}
public class VisaoProdutoPreVenda{
private int id;
private int idProduto;
private BigDecimal valorDesconto;
private BigDecimal quantidadeDisponivel;
private BigDecimal vlUnitario;
private int idEmpresa;
private Integer idLinha;
private int idClasse;
private int idSubclasse;
private String nomeLinha;
private String unidade;
private String descricao;
private String descricaoComplementar;
private String fracionar;
private int idTipoDesconto;
}
我想在表中使用VisaoProdutoPreVenda豆的三个字段,所以我tryied这样的:
public class ControladorPainelPreVenda {
...
@FXML
private TableView<ItemBean> tabelaItens;
@FXML
private TableColumn colunaCodigo;
@FXML
private TableColumn colunaDescricao;
@FXML
private TableColumn colunaLinha;
@FXML
private TableColumn colunaQuantidade;
@FXML
private TableColumn colunaValorLiquido;
@FXML
private TableColumn colunaValorTotal;
private ObservableList<ItemBean> itens = FXCollections.observableArrayList();
...
private void configurarTabela() {
/* These three first columns content aren't shown */
colunaCodigo.setCellValueFactory(new PropertyValueFactory<ItemBean,String>("produto.id"));
colunaDescricao.setCellValueFactory(new PropertyValueFactory<ItemBean,String>("produto.descricao"));
colunaLinha.setCellValueFactory(new PropertyValueFactory<ItemBean,String>("produto.nomeLinha"));
colunaQuantidade.setCellValueFactory(new PropertyValueFactory<ItemBean,BigDecimal>("quantidade"));
colunaValorLiquido.setCellValueFactory(new PropertyValueFactory<ItemBean,BigDecimal>("valorLiquido"));
colunaValorTotal.setCellValueFactory(new PropertyValueFactory<ItemBean,BigDecimal>("valorTotal"));
tabelaItens.setItems(itens);
}
...
}
我不知道我是否可以使用像PropertyValueFactory“produto.id”的符号。我如何配置这三列来显示我想要的内容?
如果我创建在ItemBean一个'getProdutoId()'简单地返回'return produto.getId()'这是相同的代码,没有任何改变属性......也许更好的解决方案是创建我自己的'CellValueFactory'。 – brevleq 2013-04-11 11:44:30
你的选择应该工作正常。请注意,如果您想要在“TableView”中进行编辑,那么您需要切换到使用属性或继续并实现自定义的“CellFactory”。 'CellValueFactory'可以工作,但没有绑定,你将不得不手动处理编辑。 – OttPrime 2013-04-11 13:02:11