Boa noite pessoal! Tudo bem com vocês!
Eu to com uma dificuldade de fazer a ação de um botão dentro de uma tableview alguem pode me ajudar?
A ideia é de cada vez que eu clicar em um desses botões pagar a parcela, mas eu não estou conseguindo fazer este evento…
Eu sou novo aqui no guj e esta é minha primeira publicação, se o código que eu mandar ficar não padronizado eu peço desculpas…
Preenchimento da TableView
@FXML private TableColumn<Titulos, Integer>
tcl_Pagamento_Parcelas;
@FXML
public void colocando_TableView(int id_Venda)
{
tcl_Id_Titulo.setCellValueFactory(new
PropertyValueFactory(“id_Titulo”));
tcl_Nome_Cliente.setCellValueFactory(new
PropertyValueFactory(“Cliente_Titulo”));
tcl_Valor_Parcela.setCellValueFactory(new
PropertyValueFactory(“valor_Parcela”));
tcl_Data_Vencimento.setCellValueFactory(new
PropertyValueFactory("data_Vencimento"));
tcl_Pagamento_Parcelas.setCellValueFactory(new PropertyValueFactory(“button”));
try { tbv_Exibicao_Titulos.setItems(atualizar_Tabela(id_Venda));
} catch (SQLException ex) { Logger.getLogger(FXML_Clientes_CadastroController.class.getName()).log(Level.SEVERE, null, ex);
}
}
@FXML
public ObservableList<Titulos> atualizar_Tabela(int id_Venda) throws SQLException{
Titulos_DAO ted = new Titulos_DAO();
return FXCollections.observableArrayList(ted.clientes_Titulos(id_Venda));
}
Modelo
public class Titulos{
private int id_Titulo;
private int valor_Parcela;
private Date data_Vencimento;
private Pagamento_Venda id_Pagamento;
private String tipo_Conta;
public int getId_Titulo() {
return id_Titulo;
}
public void setId_Titulo(int id_Titulo) {
this.id_Titulo = id_Titulo;
}
public int getValor_Parcela() {
return valor_Parcela;
}
public void setValor_Parcela(int valor_Parcela) {
this.valor_Parcela = valor_Parcela;
}
public Date getData_Vencimento() {
return data_Vencimento;
}
public void setData_Vencimento(Date data_Vencimento) {
this.data_Vencimento = data_Vencimento;
}
public Pagamento_Venda getId_Pagamento() {
return id_Pagamento;
}
public void setId_Pagamento(Pagamento_Venda id_Pagamento) {
this.id_Pagamento = id_Pagamento;
}
public String getTipo_Conta() {
return tipo_Conta;
}
public void setTipo_Conta(String tipo_Conta) {
this.tipo_Conta = tipo_Conta;
}
public String getCliente_Titulo(){
return id_Pagamento.getId_Vendas().getId_Cliente().getNome_Cliente();
}
private Button button;
public Button getButton() {
return button;
}
public void setButton(Button button) {
this.button = button;
}
public Titulos() {
this.button = new Button ("Pagar Parcela");
}
Agradeço imensamente quem poder me ajudar, estou em época de tcc e não consigo prosseguir por causa disto
Se até o final da semana vc não conseguir resolver, Eu darei uma olhada.
1 curtida
Veja esse exemplo simples, então é somente adaptar no seu codigo.
Detalhes para colBtn.setCellFactory(cellFactory); e tambem para setGraphic(btn); esse é um recurso interessante do JavaFX que permite a pratica de colocar qualquer Node na celula.
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import javafx.util.Callback;
public class TableViewSample extends Application {
private final TableView<Data> table = new TableView<>();
private final ObservableList<Data> tvObservableList = FXCollections.observableArrayList();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Tableview com Botao de Evento");
stage.setWidth(600);
stage.setHeight(600);
setTableappearance();
fillTableObservableListWithSampleData();
table.setItems(tvObservableList);
TableColumn<Data,Integer> colId = new TableColumn<>("ID");
colId.setCellValueFactory(new PropertyValueFactory<>("id"));
TableColumn<Data, String> colName = new TableColumn<>("Nome");
colName.setCellValueFactory(new PropertyValueFactory<>("nome"));
table.getColumns().addAll(colId, colName);
addButtonToTable();
Scene scene = new Scene(new Group(table));
stage.setScene(scene);
stage.show();
}
private void setTableappearance() {
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.setPrefWidth(600);
table.setPrefHeight(600);
}
private void fillTableObservableListWithSampleData() {
tvObservableList.addAll(new Data(1, "Venda"),
new Data(2, "Venda"),
new Data(3, "Venda"),
new Data(4, "Venda"),
new Data(5, "Venda"));
}
private void addButtonToTable() {
TableColumn<Data, Void> colBtn = new TableColumn("Button Column");
Callback<TableColumn<Data, Void>, TableCell<Data, Void>> cellFactory = new Callback<TableColumn<Data, Void>, TableCell<Data, Void>>() {
@Override
public TableCell<Data, Void> call(final TableColumn<Data, Void> param) {
final TableCell<Data, Void> cell = new TableCell<Data, Void>() {
private final Button btn = new Button("Pagar Parcela");
{
btn.setOnAction((ActionEvent event) -> {
Data data = getTableView().getItems().get(getIndex());
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Pagamento");
alert.setHeaderText("Pagamento Parcela");
alert.setContentText("referencia ID = " + data.getId() );
alert.showAndWait();
});
}
@Override
public void updateItem(Void item, boolean empty) {
super.updateItem(item, empty);
if( empty ) {
setGraphic(null);
} else {
Data data = getTableView().getItems().get(getIndex());
btn.setText(btn.getText() + " " + data.getId() );
setGraphic(btn);
}
}
};
return cell;
}
};
colBtn.setCellFactory(cellFactory);
table.getColumns().add(colBtn);
}
public class Data {
private int id;
private String nome;
private Data(int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId() {
return id;
}
public void setId(int ID) {
this.id = ID;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return "id: " + id + " - " + "name: " + nome;
}
}
}
Bons Codigos