Problema com TableColumn

0 respostas
S

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:

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.
    }
    
}

E também uma classe Treino:

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;

    }

}

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.

Criado 6 de março de 2014
Respostas 0
Participantes 1