java - 在javafx中填充tableview

标签 java javafx tableview tablecolumn

我想填充 TableView在 JavaFX 中。我的类(class)是Manual它有另一个对象,如属性( User )。如何使用 User 中的用户名填充表列目的。

columnVanzator.setCellFactory(new Callback<TableColumn<Manual, User>, 
                                                        TableCell<Manual, User>>() {

   @Override
   public TableCell<Manual, User> call(TableColumn<Manual, User> arg0) {
        final TableCell<Manual, User> cell = new TableCell<Manual, User>() {
             @Override
             public void updateItem(final User item, boolean empty) {
                    super.updateItem(item, empty);
                    if (empty) {
                        this.setText("");
                    } 
                    else {
                          this.setText(item.getUsername());
                    }
             }
         };
         return cell;
    } 
});

我收到NullPointerExceptionthis.setText(item.getUsername());

最佳答案

您要寻找的不是 cellFactory,而是 cellValueFactory。 如果列中显示的类型比字符串或数字更复杂(例如日期、状态或更复杂的类型),则使用自定义 cellFactory。

JavaFX 的 cellValueFactory 与属性配合使用效果最佳:

column.setCellValueFactory((p) -> p.getValue().yourContentProperty());

但看起来您的对象中没有相应的 JavaFX 属性,因此我们必须构建一些解决方法:

column.setCellValueFactory((p) -> new SimpleStringProperty(p.getValue().getUsername());

我建议以 JavaFX 风格构建模型并在其中包含属性。如果属性内部的值发生变化,TableView 将自动更新单元格。 JavaFX 中的几乎每个控件都是如此。但如果您不能或根本不想,请随意使用上面的方式,但请记住,值更改不会自动通知 View !

关于java - 在javafx中填充tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443305/

相关文章:

java - 如何实现社交媒体/网站监控服务?

java - xsd java类生成

Java 9 javapacker 在创建 bss 时找不到 jfxrt.jar。在 Linux 下似乎在 "createbss"模式下完全损坏。如何避免错误?

css - TextArea 不处理 MouseEvent.MOUSE_PRESSED

swift - 按距离排序 Tableview,Swift

swift - 如何更改 TableView 中按钮的标题 (Swift)

java - Jnlp 错误 : Could not find main class

java - s.equals ("") 和 "".equals(s) 有什么区别

java - 如何将信息从 java 发送到 windows 任务栏到 javafx

java - 如何为 TableView 的一行着色?