我想使用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