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=">" />
</children>
</AnchorPane>
Grato pela ajuda