JavaFX TableView PropertyValueFactory错误 [英] JavaFX TableView PropertyValueFactory Error

查看:64
本文介绍了JavaFX TableView PropertyValueFactory错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在JavaFX中遇到一个简单的问题,即它不起作用, PropertyValueFactory 无法从类中获得我的 ID :这是我的控制器:

I'm having simple problem in my JavaFX somehow it didn't work, The PropertyValueFactory unable to get my ID from class: This is my Controller:

public TableColumn ItemIDTableColumn;

ItemIDTableColumn.setCellValueFactory(new PropertyValueFactory<ReceiptItem, String>("mItemID"));
ItemIDTableColumn.setCellFactory(stringCellFactory);
ItemTableView.setItems(ReceiptItem);

Callback<TableColumn, TableCell> stringCellFactory =
                new Callback<TableColumn, TableCell>() {
                    @Override
                    public TableCell call(TableColumn p) {
                        MyStringTableCell cell = new MyStringTableCell();
                        cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new MyEventHandler());
                        return cell;
                    }
                };

class MyStringTableCell extends TableCell<ReceiptItem, String> {

    @Override
    public void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        setText(empty ? null : getString());
        setGraphic(null);
    }

    private String getString() {
        return getItem() == null ? "" : getItem().toString();
    }
}

这是我的课程:

package ModelData;

public class ReceiptItem {
    private String mItemID;

    public String getmItemID() {
        return mItemID;
    }

    public void setmItemID(String mItemID) {
        this.mItemID = mItemID;
    }
}

如此处所示,我正在使用getter和setter,所以有人知道这是什么问题吗?

As seen here, I'm using getter and setter, so anyone know what's the problem?

推荐答案

PropertyValueFactory 期望getter方法中属性名称的第一个字母为大写.在这种情况下,它将查找名为 getMItemID 的方法.您的方法称为 getmItemID ,但是...

PropertyValueFactory expects the first letter of the property name in the getter method to be upper case. In this case it looks for a method named getMItemID. Your method is called getmItemID however...

请注意,对 ReceiptItem 的更新不会自动更新 TableView ,因为您没有提供 mItemIDProperty 方法来返回包装属性的对象属性值.

Note that updates to a ReceiptItem will not automatically update the TableView, since you do not provide a mItemIDProperty method returning a property object wrapping the property value.

这篇关于JavaFX TableView PropertyValueFactory错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆