我正在尝试编写一个程序,以使用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();
}
}
答案 0 :(得分:0)
我弄清楚了问题所在。我在SceneBuilder中添加了TableView,但是在我的代码中调用了table = new TableView();
,这只是从SceneBuilder中删除了一个。谢谢大家的帮助。