TableView中不显示列-Java

时间:2018-09-21 10:05:33

标签: java javafx tableview

我正在尝试编写一个程序,以使用TableView在javafx gui中显示数据库中表的内容。我有一个通用的gui,其中有一个空的TableView。确定要显示应用程序的表后,将表名发送给中间件,中间件从数据库中获取所有列名并将其bakc发送给应用程序。然后遍历所有列名,生成新的TableColumn并添加将其添加到TableView并调用TableView的refresh()方法。使用table.getChidlren();,我可以看到这些列已成功添加到TableView中,但是无论如何它们都不会显示在JavaFX GUI中。它只是一直显示“表中没有列”。所有的fx:ids和控制器类也都正确。

这是我的代码:

public void loadTableContent(){
    try (Socket client = new Socket(InetAddress.getLocalHost(), 667);
         ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
         ObjectInputStream ois = new ObjectInputStream(client.getInputStream())) {

        System.out.println("Sending request");
        oos.writeUTF(databaseTableComboBox.getSelectionModel().getSelectedItem().toString());
        oos.flush();

        System.out.println("reading from sever");
        String[] columnNames =  ois.readUTF().split(";");

        System.out.println("Column names received");

        for (String s: columnNames)
            table.getColumns().add(new TableColumn(s));

        table.refresh();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

我弄清楚了问题所在。我在SceneBuilder中添加了TableView,但是在我的代码中调用了table = new TableView();,这只是从SceneBuilder中删除了一个。谢谢大家的帮助。