Olá a todos. Estou com problemas para exibir um atributo de um objeto numa tabela. Utilizando Swing é bem simples, mas estou apanhando para fazer isso no JavaFX.
Tenho uma classe Exercício:
[code]
public class Exercicio {
private String nome;
private String grupoMuscular;
public Exercicio() {
this.nome = "";
this.grupoMuscular = "";
}
public Exercicio(String nomeExercicio) {
this.nome = nomeExercicio;
this.grupoMuscular = "";
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getGrupoMuscular() {
return grupoMuscular;
}
public void setGrupoMuscular(String grupoMuscular) {
this.grupoMuscular = grupoMuscular;
}
@Override
public String toString() {
return this.getNome(); //To change body of generated methods, choose Tools | Templates.
}
}[/code]
E também uma classe Treino:
[code]public class Treino {
private int ordem = 1;
private Exercicio exercicio;
private int repeticoes = 1;
private int series = 1;
private String diaTreino = "";
public Treino() {
}
public Treino(Exercicio exercicio) {
this.exercicio = exercicio;
}
public int getOrdem() {
return ordem;
}
public void setOrdem(int ordem) {
this.ordem = ordem;
}
public Exercicio getExercicio() {
return exercicio;
}
public void setExercicio(Exercicio exercicio) {
this.exercicio = exercicio;
}
public int getRepeticoes() {
return repeticoes;
}
public void setRepeticoes(int repeticoes) {
this.repeticoes = repeticoes;
}
public int getSeries() {
return series;
}
public void setSeries(int series) {
this.series = series;
}
public String getDiaTreino() {
return diaTreino;
}
public void setDiaTreino(String diaTreino) {
this.diaTreino = diaTreino;
}
}[/code]
E aqui está o código para exibir um objeto Treino em uma linha da tabela:
private final List<Treino> listaTreino = new ArrayList<>();
private final ObservableList<Treino> listaTreinoObservavel = FXCollections.observableList(listaTreino);
@FXML
private TableView tabelaDiaA;
@FXML
private TableColumn<Treino, Integer> tabelaAColunaOrdem;
@FXML
private TableColumn<Exercicio, String> tabelaAColunaNomeExercicio;
@FXML
private TableColumn<Treino, Integer> tabelaAColunaRepeticoes;
@FXML
private TableColumn<Treino, Integer> tabelaAColunaSeries;
private void testarListView() {
lista = new ArrayList<>();
ObservableList<Exercicio> items = FXCollections.observableList(lista);
Exercicio exercicio1 = new Exercicio();
exercicio1.setGrupoMuscular("Peito");
exercicio1.setNome("Flexão");
lista.add(exercicio1);
Exercicio exercicio2 = new Exercicio();
exercicio2.setGrupoMuscular("Costas");
exercicio2.setNome("Puxada");
lista.add(exercicio2);
Exercicio exercicio3 = new Exercicio();
exercicio3.setGrupoMuscular("Tríceps");
exercicio3.setNome("Pulley");
lista.add(exercicio3);
listaExercicios.setItems(items);
//... Alguns métodos que tratam o "Drag and Drop"...
tabelaDiaA.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent t) {
//System.out.println("setOnDragDropped");
String stringLista = t.getDragboard().getString();
String[] split = stringLista.split("#");
String nomeExercico = split[0];
String grupoMuscular = split[1];
Exercicio exercicio = new Exercicio();
exercicio.setNome(nomeExercico);
exercicio.setGrupoMuscular(grupoMuscular);
Treino treino = new Treino(exercicio);
listaTreinoObservavel.add(treino);
tabelaDiaA.setItems(listaTreinoObservavel);
//lista.remove(new Exercicio(nomeExercico));
t.setDropCompleted(true);
}
});
}
No final de tudo, eu consigo exibir todos os atributos de Treino, exceto o Exercicio.nome .Alguém teria alguma solução? Grato.