JavaFX TableView未填充
在Java8中使用JavaFX2和NetBeansIDE8.0。 我正在从JavaFX TableView未填充,java,javafx-2,tableview,Java,Javafx 2,Tableview,在Java8中使用JavaFX2和NetBeansIDE8.0。 我正在从FileMaker数据库中提取数据,并将其作为“票证”对象添加到observableArrayList(此处称为“行”)。然后,我将该列表传递到表中,以显示已发现的内容。 我已经填充了observearraylist,但无法在表中显示它 我在FXML中内置了表视图: <TableView fx:id="ticketData" layoutX="-3.0" layoutY="351.0" prefHeight="203
FileMaker
数据库中提取数据,并将其作为“票证”对象添加到observableArrayList
(此处称为“行”)。然后,我将该列表传递到表中,以显示已发现的内容。
我已经填充了observearraylist
,但无法在表中显示它
我在FXML中内置了表视图:
<TableView fx:id="ticketData" layoutX="-3.0" layoutY="351.0" prefHeight="203.0" prefWidth="554.0">
<columns>
<TableColumn fx:id="ticket" editable="false" prefWidth="59.0" text="Ticket" />
<TableColumn fx:id="dates" prefWidth="72.0" text="Date(s)" />
<TableColumn fx:id="files" editable="false" prefWidth="114.0" text="File(s) Found" />
<TableColumn fx:id="notes" prefWidth="297.0" text="Notes" />
</columns>
</TableView>
在完成对所需内容的搜索后,我在控制器中设置我的表视图
(“此处为ticketData”),以保存项目,每列都有一个与票证类相关的CellValueFactory
ticketData = new TableView();
ticket.setCellFactory(TextFieldTableCell.forTableColumn());
ticket.setCellValueFactory(
new PropertyValueFactory<>("ticketType"));
dates.setCellFactory(TextFieldTableCell.forTableColumn());
dates.setCellValueFactory(
new PropertyValueFactory<>("executionDate"));
files.setCellFactory(TextFieldTableCell.forTableColumn());
files.setCellValueFactory(
new PropertyValueFactory<>("gotFile"));
notes.setCellFactory(TextFieldTableCell.forTableColumn());
notes.setCellValueFactory(
new PropertyValueFactory<>("statusMessage"));
ticketData.getColumns().addAll(ticket,dates,files,notes);
//System.out.println(Arrays.deepToString(row.toArray()));
ticketData.setItems(row);
ticketData=newtableview();
ticket.setCellFactory(TextFieldTableCell.forTableColumn());
ticket.setCellValueFactory(
新的PropertyValueFactory(“ticketType”);
dates.setCellFactory(TextFieldTableCell.forTableColumn());
dates.setCellValueFactory(
新财产价值工厂(“执行日期”);
setCellFactory(TextFieldTableCell.forTableColumn());
files.setCellValueFactory(
新的PropertyValueFactory(“gotFile”);
notes.setCellFactory(TextFieldTableCell.forTableColumn());
notes.setCellValueFactory(
新的PropertyValueFactory(“statusMessage”);
ticketData.getColumns().addAll(票证、日期、文件、注释);
//System.out.println(Arrays.deepToString(row.toArray());
ticketData.setItems(行);
我可以在observearraylist
上打印并查看其中的条目,但是tableview
仍然为空
有什么建议吗?我错过什么了吗?我不知所措。属性值工厂(“TicketType”)
应该是TicketType,注意小写。所有字段都相同
我本来就是这样的,但它不起作用。刚刚把它改回来,看看它是否会有什么不同,什么都没有。我的tableview仍然是空的:(可能你没有从数据库中获取数据。在数据进入observableArrayList和传递到tableview之前,我已经打印了数据。那里肯定有数据,这是令人恼火的部分。
ticketData=new tableview()
不应该在那里。这就是为什么你需要一个SSCE供人们测试。我不知道它在哪里声明,但应该在某处有一个@FXML TableView ticketData
声明。你正在创建一个新表,而不是使用在FXML中创建的表。你使用的列和其他每一个FXML结构也是如此。我对所有TextFieldTableCell
没有字符串转换器,但这是另一个问题。您正在使用ticketData=newTableView()
创建一个新的TableView
,然后填充该表,而不是FXML中的表。这是
public void accumulate(String type, Date essential, boolean got, String msg)
{
Ticket ticket;
ticket = new Ticket(type, essential, got, msg);
row.add(ticket);
}
ticketData = new TableView();
ticket.setCellFactory(TextFieldTableCell.forTableColumn());
ticket.setCellValueFactory(
new PropertyValueFactory<>("ticketType"));
dates.setCellFactory(TextFieldTableCell.forTableColumn());
dates.setCellValueFactory(
new PropertyValueFactory<>("executionDate"));
files.setCellFactory(TextFieldTableCell.forTableColumn());
files.setCellValueFactory(
new PropertyValueFactory<>("gotFile"));
notes.setCellFactory(TextFieldTableCell.forTableColumn());
notes.setCellValueFactory(
new PropertyValueFactory<>("statusMessage"));
ticketData.getColumns().addAll(ticket,dates,files,notes);
//System.out.println(Arrays.deepToString(row.toArray()));
ticketData.setItems(row);