JavaFX TableView不显示内容

我试图在TableView中插入一些值,但它不显示列中的文本,即使它们不是空的,因为有三行(与TableView中插入的项目数相同),它们是点击。

我可以选择原料,但我看不到它们

我有类“ClientiController”这是fxml文件的控制器,这些是TableView的声明和tableView的列。

@FXML // fx:id="clientitable"
private TableView clientitable; // Value injected by FXMLLoader

@FXML // fx:id="nome"
private TableColumn nome; // Value injected by FXMLLoader

@FXML // fx:id="id"
private TableColumn id; // Value injected by FXMLLoader

@FXML // fx:id="telefono"
private TableColumn telefono; // Value injected by FXMLLoader

我调用initialize()方法的一个函数,称为loadTable(),它将内容添加到TableView。

loadTable在同一个类“ClientiController”中,这是它的实现:

    @FXML
void loadTable()
{
    //Cliente
    try {
        List<String> clienti = (List<String>) fc.processRequest("ReadClienti");
        ObservableList<String> clienteData = FXCollections.observableArrayList(clienti);

        id.setCellValueFactory(new PropertyValueFactory<Cliente, String>("id"));
        nome.setCellValueFactory(new PropertyValueFactory<Cliente, String>("nome"));
        cognome.setCellValueFactory(new PropertyValueFactory<Cliente, String>("cognome"));
        telefono.setCellValueFactory(new PropertyValueFactory<Cliente, String>("n_tel"));


        System.out.println(clienteData);
        clientitable.setItems(clienteData);

        } catch (SecurityException | NoSuchMethodException
            | ClassNotFoundException | InstantiationException
            | IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
}

在类Cliente我有这些字符串:

private String id, nome, cognome, n_tel;

以及每个String元素的get和set函数,它们从数据库中获取值。 在这个类中,我也有readAll方法( ReadClienti )。 在函数loadTable()中的List<Cliente> clienti中,存在readAll方法的结果,并且该函数返回ArrayList<ArrayList<String>>类型。

如果我选择第一个原始的(即使我看不到列中的文本)然后像这样打印它,

ArrayList<String> person =  (ArrayList<String>) clientitable.getSelectionModel().getSelectedItem();
System.out.println(person); 

它一切正常,并打印出我插入的值作为第一,所以我知道值实际上是在该表中。

我也尝试将此类中的私有字符串字符串更改为SimpleStringProperty,就像我在此处的其他讨论中看到的,但没有任何更改。

我怎样才能让tableView显示其内容?

编辑:我认为问题出现在作业中

            List<String> clienti = (List<String>) fc.processRequest("ReadClienti");

在loadTable()的第一个raw中,因为我无法将类型ArrayList<ArrayList<String>>转换为List<String> 。 但是我必须将这些值填充到ListView中的ObservableList<String>仅获取列表或简单ArrayLists作为输入。 我如何转换我的ArrayList<ArrayList<String>>变量以匹配ObservableList类型?

链接地址: http://www.djcxy.com/p/80149.html

上一篇: JavaFX TableView doesn't show the content

下一篇: JavaFX TableView invert rows and columns