当前位置: 首页 > 知识库问答 >
问题:

JavaFX TableView不显示内容

孙承
2023-03-14

我试图在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;

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

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

它工作得很好,它打印我插入的值作为第一个,所以我知道值实际上在那个表中。

我还尝试将该类中的私有字符串strings更改为SimpleStringProperty,就像我在这里的其他讨论中看到的那样,但没有任何改变。

如何使tableView显示其内容?

编辑:我想问题出在作业上

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

在loadTable()的第一个raw中,因为我不能将arraylist > 类型转换为list 。但是observableList (我必须将值放入其中以填充ListView)只获取列表或简单的ArrayLists作为输入。如何转换arraylist > 变量以匹配ObservableList类型?

共有1个答案

司寇昱
2023-03-14

您的类“Cliente”没有getter和setter。还要注意参数的getter和setter的名称。getter和setter不应与上面声明的参数不同。
例如:

private String Clienteid;
private String ClienteName;

public getClientid(){
    return Clienteid;
}

这行代码需要类的getter和setter...

id.setCellValueFactory(new PropertyValueFactory<Cliente, String>("id"));
nome.setCellValueFactory(new PropertyValueFactory<Cliente, String>("nome"));
 类似资料:
  • 我将greeting.html文件放在src/main/webapp/web-inf/templates和src/main/resources/templates中,我试图在application.properties中指定 我尝试了这些StackOverflow中提出的解决方案:“Spring Boot不提供静态内容”和“Spring Boot不启动静态web内容”,但没有任何改变... 最后是

  • 我在运行webpack dev服务器时遇到以下问题:当我运行npm start时,它显示以下内容: ➜ 目录git:(暂存)✗ npm启动 目录 @1.0.0 启动目录 BUILD_DEV=1 BUILD_STAGING=1 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js http://localhost:8080/ webp

  • 我使用fiddler监控一个简单的html内容从一个PHP文件运行在localhost。但是每当我按f5刷新页面(浏览器)时,在fiddler中有时整个web会话的字体变成蓝色,即当它实际显示内容(html)时,相反的情况发生在web会话是灰色的时候,它不显示html内容。 注意:始终显示请求/响应标题,这仅用于内容。我还尝试了点技巧(“:80”)并从localhost切换到127.0。0.1.

  • 问题内容: 我正在升级应用程序以使用iOS 13中定义的新模式,但是该应用程序的关键部分已停止工作。我一直在使用a 来覆盖屏幕上的当前内容并向用户显示新信息,但是在我正在使用的当前Beta(iOS + XCode beta 3)中,该窗口会出现,但随后会立即消失。 这是我正在使用的代码,现在无法使用: 我已经尝试了很多方法,包括使用来展示新的东西,但是却找不到任何实际的文档或示例。 我的尝试之一(

  • 我试图设计一个弹出窗口。我设计了它,它的工作原理,但有一个小问题。这是弹出窗口代码的一部分: 这就是我所说的: 弹出窗口在应该工作的时候工作。但是其中的内容没有完全显示。这是屏幕截图: 如何解决这个问题?

  • 问题内容: 我一直在寻找一个很好的技巧,使隐藏/显示内容或仅具有CSS而没有javascript的列表。我已成功执行此操作: 并且它正在工作,但没有达到应有的效果。这是问题所在:显示内容时,您可以通过单击“页面上的任何位置”将其隐藏。如何禁用它?如何通过单击“隐藏”隐藏内容“仅”?先感谢您! 问题答案: 我不会使用复选框,而是使用您已经拥有的代码 CSS HTML 这样,仅在单击hide元素时隐藏