TableView não exibe os dados com JavaFx

Boa tarde, estou montando um layout com tableView carregado com informações do banco de dados e FXML, ao executar percebi que o tableview recebe os valores do meu dao pois ele exibe exatamente a quantidade de linhas vinda da query, ao fazer um foreach e os dados estão ok, porém o tableview aparece sem as linhas preenchidas.
Fonte: controller

public class TableViewController {
    private TagsDAO dao;
    private List<Tags> tagsList;
    //private DateTimeFormatter fomatador = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    
    
    @FXML
    private TableView<Tags> tbv1;
    
    @FXML
    private void initialize(){
        //obtém o objeto DAO
        dao = DAOFactory.getTagsDAO();
        
        // Adiciona um listener para ser notificado quando o usuário seleciona um item na tabela.
        // Dessa forma é possível definir os bindings corretamente.
        loadData();
        
    }
    
    private void loadData(){
        try {
            tagsList = dao.load();    
                        
            ObservableList<Tags> list = FXCollections.observableArrayList(tagsList);    
                    
            tbv1.setItems(list);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

Método DAO

public List<Tags> load() {
        try (Connection conn = ConnectionFactory.openConnection()) {
            sql = "SELECT dt.Tag, dt.Id FROM DadoTag dt ORDER BY dt.Id ASC";

            try (PreparedStatement stmt = conn.prepareStatement(sql)) {
                // executa a busca
                try (ResultSet rs = stmt.executeQuery()) {
                    List<Tags> tags = new ArrayList<>();

                    // para cada registro encontrado na tabela, cria um objeto
                    // Tag e coloca na lista
                    while (rs.next()) {
                        Tags tagsModel = new Tags();
                        tagsModel.setDescTag(rs.getString("Tag"));
                        tagsModel.setId(rs.getInt("Id"));
                        tags.add(tagsModel);
                    }

                    return tags;
                }

            }
        } catch (SQLException e) {
            alert = new Alert(AlertType.ERROR);
            alert.setTitle("Risc Automação");
            alert.setHeaderText("Erro");
            alert.setContentText(e.toString());
            alert.showAndWait();
            throw new DAOException(e);
        }
    }

FXML:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>

<AnchorPane prefHeight="417.0" prefWidth="732.0" styleClass="background" stylesheets="br/ind/risc/view/css/RootTheme.css" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="br.ind.risc.controller.TableViewController">
   <children>
      <Pane layoutX="6.0" layoutY="6.0" prefHeight="229.0" prefWidth="329.0" styleClass="pane" stylesheets="br/ind/risc/view/css/RootTheme.css">
         <children>
            <Label layoutX="8.0" layoutY="-8.0" styleClass="label" stylesheets="br/ind/risc/view/css/RootTheme.css" text="TAGS" />
            <TableView fx:id="tbv1" layoutX="8.0" layoutY="9.0" prefHeight="215.0" prefWidth="316.0">
              <columns>
                <TableColumn text="TAG" prefWidth="100"/>
              </columns>
            </TableView>
         </children>
      </Pane>
      <Pane layoutX="414.0" layoutY="10.0" prefHeight="222.0" prefWidth="316.0" styleClass="pane" stylesheets="br/ind/risc/view/css/RootTheme.css">
         <children>
            <Label layoutX="2.0" layoutY="-11.0" styleClass="label" stylesheets="br/ind/risc/view/css/RootTheme.css" text="TAGS\Consulta" />
         </children>
      </Pane>
      <Pane layoutX="4.0" layoutY="252.0" prefHeight="179.0" prefWidth="728.0" styleClass="pane" stylesheets="br/ind/risc/view/css/RootTheme.css">
         <children>
            <Label layoutX="14.0" layoutY="-8.0" text="Dados" />
            <DatePicker layoutX="92.0" layoutY="16.0" />
            <Label layoutX="13.0" layoutY="25.0" text="Data.:" />
            <Label layoutX="10.0" layoutY="55.0" text="Hora Inicial.:" />
            <Label layoutX="13.0" layoutY="91.0" text="Hora Final.:" />
            <TextField layoutX="92.0" layoutY="51.0" />
            <TextField layoutX="93.0" layoutY="87.0" />
            <Button layoutX="109.0" layoutY="123.0" mnemonicParsing="false" prefHeight="44.0" prefWidth="133.0" text="Gerar relatório">
            </Button>
         </children>
      </Pane>
      <Button layoutX="342.0" layoutY="121.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="65.0" text="&gt;" />
   </children>
</AnchorPane>

Grato pela ajuda

Olá, faltou você ligar as propriedades do seu bean com as colunas da tableview
Exemplo:

// Vinculação das colunas
colDescricao.setCellValueFactory((param) -> {
return param.getValue().getDescricao();                             
});

    colValor.setCellValueFactory((param) -> {
        return param.getValue().getValor().asObject();                       // Ligando a coluna "Valor" à propriedade valor da Despesa
    });

Veja mais em: http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm#CJAGAAEE

Andrauss, obrigado pela resposta, no meu caso uso o FXML, para fazer o bind percebi que tenho que colocar a seguinte tag dentro da tableView

<cellValueFactory> <PropertyValueFactory property="servico" /> </cellValueFactory>

Dessa forma defino um property para o table, porém como faço para vincular isso no código?
Grato.

Também estou com o mesmo problema, onde a minha tabela não preenche nada, mas o minha classe Dao faz a pesquisa normalmente, porém a tabela não é preenchida.

@FXML
public void initialize(URL url, ResourceBundle rb){
initable();
}
public void initable(){
codClientestableView.setCellValueFactory(new PropertyValueFactory(“id”));
nomeClientestableView.setCellValueFactory(new PropertyValueFactory(“nome”));
tefefoneClientestableView.setCellValueFactory(new PropertyValueFactory(“telefon”));
cpfClientestableView.setCellValueFactory(new PropertyValueFactory(“cpf”));
emailClientestableView.setCellValueFactory(new PropertyValueFactory(“email”));
enderecoClientestableView.setCellValueFactory(new PropertyValueFactory(“endereco”));
obsClientestableView.setCellFactory(new PropertyValueFactory(“observa”));
meusClientestableView.setItems(atualizaTabela());
}
public ObservableList atualizaTabela(){
UsuarioDao dao = new UsuarioDao();
return FXCollections.observableArrayList(dao.getList());
}

e o método da classe dao.
public List getList(){
List usuarios = new ArrayList<>();
String sql = “SELECT * FROM clientes;”;
try {
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
ModeloUsuario u = new ModeloUsuario();
u.setCod(rs.getLong(“id”));//Essa string é de acordo com o nome da coluna no BD
u.setNome(rs.getString(“nome”));
u.setTelefone(rs.getString(“telefon”));
u.setCpf(rs.getString(“cpf”));
u.setEmail(rs.getString(“email”));
u.setCidade(rs.getString(“cidade”));
u.setBairro(rs.getString(“bairro”));
u.setComplemento(rs.getString(“complemento”));
u.setEndereco(rs.getString(“endereco”));
u.setN(rs.getString(“n”));
usuarios.add(u);
}
stmt.close();
rs.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
return usuarios;
}