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

将ObservableList插入TableView JavaFX

高兴贤
2023-03-14

我想将所有囚犯数据显示到一个TableView中。囚犯看起来像这样(所有代码都是一个示例):

public class Prisoner {
    private String id;
    private String name;
    private PrisonerCase case;
    Prisoner() {
        id = "Unknown";
        name = "Unknown";
        case = new PrisonerCase();
    }
}

public class PrisonerCase {
    private String id_case;
    private String date_case;
    PrisonerCase() {
        id_case = "unknown";
        date_case = "unknown";
    }
}

然后我有了我的TableView:数据是一个可观察列表

TableView tv = new TableView();
data = Database.getData();
TableColumn id_column = new TableColumn("ID");
id_column.setCellValueFactory(new PropertyValueFactory<Prisoner, String>("id"));

这工作正常,但我的问题是,如何在TableView中添加大小写?我试过了

TableColumn n_case_column = new TableColumn("N° Case");
n_case_colmun.setCellValueFactory(new PropertyValueFactory<PrisonerCase, String>("id_case"));

但它不起作用。当然,我没有忘记在最后将所有列添加到TableView。

tv.setItems(data);
tv.getColmuns().addAll(id_column, n_case_column);

共有1个答案

廖诚
2023-03-14

首先,永远不要使用原始类型。TableView的类型是表示每行的对象的类型(在本例中为Prisoner)。TableCol列s的类型首先是TableView的类型,其次是该列中每个单元格中显示的数据的类型。

所以你应该

TableView<Prisoner> tv = new TableView<>();
TableColumn<Prisoner, String> idColumn = new TableColumn<>("ID");
TableColumn<Prisoner, String> nCaseColumn = new TableColumn<>("N° Case");

您没有在类中显示方法;我假设您遵循标准的Java命名约定(我在上面更改了一些变量名,以符合这些约定)。那你就可以

idColumn.setCellValueFactory(cellData -> 
    new SimpleStringProperty(cellData.getValue().getId()));
// or 
// idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); 
// but the first version above is better, imho

nCaseColumn.setCellValueFactory(cellData -> 
    new SimpleStringProperty(cellData.getValue().getCase().getIdCase()));
 类似资料:
  • 问题内容: 有没有办法投来?我想不重复进行。 更具体地说,我正在使用ORMLite从数据库中获取数据,并且需要从DB中获取数据的方法作为输出。 目前我正在做这样的事情: 我想做这样的事情: 问题答案: 你可以做

  • 我在将dsata绑定到tabl时遇到了一些麻烦;JavaFX中的E 我有我的模型controtor.java 公共课指挥{

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 我正在尝试插入一个HTML块到一个div。我想看看简单的JavaScript方式是否比使用jQuery更快。不幸的是,我忘了怎么用‘老办法’做这件事。:p 伙计们,我做错了什么? 编辑: 有人问jquery和普通js哪个更快,所以我编写了一个测试: http://jsperf.com/html-insertion-js-vs-jQuery 纯js快10%

  • 问题内容: 这是场景: 我正在尝试在插入表时创建引用记录。但是我得到的是null,因为它是自动从序列中生成的。我也尝试了触发器插入,但是结果是一样的。有什么办法解决吗? 问题答案: 避免使用规则,因为它们会再次咬住您。 在每行运行的表a上使用after触发器。它看起来应该像这样(未经测试):

  • 我有一个JavaFX TableView定义为: 它由一个ObservableList支持: