Javafx PropertyValueFactory 未填充 Tableview

2024-01-01

这让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。

确实如此,我单击填充的行,但在其中看不到任何值 - 在本例中为字符串值。 [我刚刚编辑了这个以使其更清楚]

我有一个不同的项目,它在相同类型的数据模型下工作。我究竟做错了什么?

这是代码。最后的注释代码似乎可以工作。我检查了是否存在常见错误 - 创建新的列实例或新的表视图实例。没有什么。请帮忙!


//简单数据模型 Stock.java

public class Stock {

    private SimpleStringProperty stockTicker;

    public Stock(String stockTicker) {
        this.stockTicker = new SimpleStringProperty(stockTicker);
    }

    public String getstockTicker() {
        return stockTicker.get();
    }

    public void setstockTicker(String stockticker) {
        stockTicker.set(stockticker);
    }
}

//控制器类 MainGuiController.java

    private ObservableList<Stock> data;
    @FXML
    private TableView<Stock> stockTableView;// = new TableView<>(data);
    @FXML
    private TableColumn<Stock, String> tickerCol;


    private void setTickersToCol() {
    try {
        Statement stmt = conn.createStatement();//conn is defined and works
        ResultSet rsltset = stmt.executeQuery("SELECT ticker FROM tickerlist order by ticker");
        data = FXCollections.observableArrayList();
        Stock stockInstance;
        while (rsltset.next()) {
            stockInstance = new Stock(rsltset.getString(1).toUpperCase());
            data.add(stockInstance);
        }
    } catch (SQLException ex) {
        Logger.getLogger(WriteToFile.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("Connection Failed! Check output console");
    }

    tickerCol.setCellValueFactory(new PropertyValueFactory<Stock,String>("stockTicker"));
    stockTableView.setItems(data);
    }

    /*THIS, ON THE OTHER HAND, WORKS*/
    /*Callback<CellDataFeatures<Stock, String>, ObservableValue<String>> cellDataFeat =
            new Callback<CellDataFeatures<Stock, String>, ObservableValue<String>>() {
        @Override
        public ObservableValue<String> call(CellDataFeatures<Stock, String> p) {
            return new SimpleStringProperty(p.getValue().getstockTicker());
        }
    };*/

建议的解决方案(使用 Lambda,而不是 PropertyValueFactory)

代替:

aColumn.setCellValueFactory(new PropertyValueFactory<Appointment,LocalDate>("date"));

Write:

aColumn.setCellValueFactory(cellData -> cellData.getValue().dateProperty());

欲了解更多信息,请参阅此答案:

  • Java: setCellValuefactory; Lambda 与 PropertyValueFactory;优点缺点 https://stackoverflow.com/questions/38049734/java-setcellvaluefactory-lambda-vs-propertyvaluefactory-advantages-disadvant/38050982#38050982

使用 PropertyValueFactory 的解决方案

上面概述的 lambda 解决方案是首选,但如果您希望使用 PropertyValueFactory,此替代解决方案提供了相关信息。

如何修复它

你的 getter 和 setter 方法的情况是错误的。

getstockTicker应该getStockTicker

setstockTicker应该setStockTicker

一些背景信息

您的 PropertyValueFactory 保持不变:

new PropertyValueFactory<Stock,String>("stockTicker")

当您还向 Stock 类添加属性访问器时,命名约定将显得更加明显:

public class Stock {

    private SimpleStringProperty stockTicker;

    public Stock(String stockTicker) {
        this.stockTicker = new SimpleStringProperty(stockTicker);
    }

    public String getStockTicker() {
        return stockTicker.get();
    }

    public void setStockTicker(String stockticker) {
        stockTicker.set(stockticker);
    }

    public StringProperty stockTickerProperty() {
        return stockTicker;
    }
}

PropertyValueFactory 使用反射来查找相关的访问器(这些访问器应该是公共的)。首先,它将尝试使用 stockTickerProperty 访问器,如果不存在,则回退到 getter 和 setter。建议提供属性访问器,因为这样您将自动使表能够观察底层模型中的属性,并随着底层模型的更改动态更新其数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javafx PropertyValueFactory 未填充 Tableview 的相关文章

随机推荐

  • Angular CLI (7.0.5) 用于开发和生产的不同资产?

    是否可以使用 Angular CLI 7 0 5 使用不同的资产进行开发和生产 对于生产我想要资产 assets projects example src favicon ico 为了发展我想要资产 assets projects exam
  • Python 将日期时间小时设置为特定时间

    我试图将日期定为昨天晚上 11 30 这是我的代码 import datetime yesterday datetime date today datetime timedelta days 1 PERIOD yesterday strft
  • 外部混洗:从内存中混洗大量数据

    我正在寻找一种方法来整理内存不适合的大量数据 大约 40GB 我有大约 3000 万个可变长度的条目 存储在一个大文件中 我知道该文件中每个条目的开始和结束位置 我需要对内存中不适合的数据进行洗牌 我想到的唯一解决方案是对包含以下数字的数组
  • 在 bash 脚本中运行 tail -f 特定时间

    我需要一个可以运行一系列的脚本tail f命令并将它们输出到文件中 我需要的是为了tail f运行一定的时间来 grep 特定的单词 之所以是一定时间 是因为其中一些值不会立即显示 因为这是实时日志 我怎样才能运行这样的东西 比如说 20
  • 引用 LSF 作业数组中的作业索引

    我试图将作业数组中作业的索引作为参数传递给另一个 bash 脚本 numSims 3 numTreatments 6 uses numTreatments top rows of parameters csv maxFail 10 j 1
  • 如何获取 apache kafka 中的所有主题?

    RequestMapping value getTopics method RequestMethod GET ResponseBody public Response getAllTopics ZkClient zkClient new
  • 触发点击事件在 IE10 中不起作用[重复]

    这个问题在这里已经有答案了 我需要添加onclick事件到图像 因此当我单击图像时 它将触发文件打开对话框 但在 IE10 下不起作用 button on click function upload trigger click upload
  • 创建适合以下参数的假数据集:N、平均值、标准差、最小值和最大值

    有没有办法创建一个适合以下参数的假数据集 N 平均值 标准差 最小值和最大值 我想创建一个包含 187 个整数比例分数的样本 其平均值为 67 标准差为 17 观察值在 30 210 范围内 我正在尝试演示有关统计功效的概念课程 并且我想创
  • C语言如何跳过文件的前两行?

    我是 C 编程新手 我很困惑如何跳过文件中的前两行 我尝试使用fgets and fscanf 但我不知道该怎么做 假设我有一个文件txt像这样 1 Username Test 2 Password 12345 3 4 那么如何从第 3 行
  • 在 Linux 上用 C++ 移动文件的更快方法

    我正在尝试使用 C 在 Linux 上移动文件 问题是 源文件和目标文件夹可能位于不同的分区 所以我不能简单地移动文件 好的 我决定复制该文件并删除旧文件 bool copyFile string source string destina
  • 非阻塞 tun/tap 文件描述符上的 read() 收到 EAGAIN 错误

    我想从非阻塞 tun tap 文件描述符读取 IP 数据包tunfd我设置了tunfd作为非阻塞并在 libevent 中为其注册 READ EV 事件 当事件触发时 我先读取前20个字节来获取IP头 然后 阅读其余部分 nr bytes
  • MS Access 使用 Group By 进行舍入精度

    为什么员工每个月的平均得分相加后不等于员工 曾经 的平均得分 Average SELECT Avg r score AS rawScore FROM ET INNER JOIN Employee AS e ON ET employeeId
  • 数据注释隐藏属性/字段

    我有一个模型 class Address public int AddressID get set public string Street get set public string City get set public string
  • 从 R 中的分钟数据创建 15 分钟的时间间隔?

    我有一些数据 其格式如下 time count 00 00 17 00 01 62 00 02 41 所以我有从 00 00 到 23 59 的时间 并且每分钟有一个计数器 我想以 15 分钟为间隔对数据进行分组 这样 time count
  • ListTile可以设置边框吗? (扑)

    如何设置边框ListTile小部件 文档中没有它的属性 装饰 所以我不能像往常一样为这个元素应用边框 我也无法包装 ListTile 的属性 例如标题 副标题 前导 尾随在容器中 因为它不起作用 然而 如果没有任何巧妙的方法来设置带有边框的
  • 防止 之后换行

    In span HTML 叙述流中的元素 为了扩展检测到点击的区域 某些跨度仅包含一个字符的内容 我在定义为的类中添加填充 用负边距抵消它 expand click area display inline block padding 5px
  • Python:当已经有一个事件循环正在运行时,从同步方法调用异步代码[重复]

    这个问题在这里已经有答案了 我正在使用 FastAPI 和 uvloop 以有效的方式提供 REST API 我有很多异步代码来调用远程资源 例如数据库 存储等 这些函数如下所示 async def get remote resource
  • 是否可以在 Web 应用程序中运行 cron 作业?

    在java web应用程序 servlets spring mvc 中 使用tomcat 是否可以运行cron作业类型服务 例如每 15 分钟清除一次日志数据库 您能否以独立于容器的方式执行此操作 或者必须使用 tomcat 或其他容器来运
  • 在我的 Rails 项目中使用 MariaDB 而不是 MySQL

    如何在我的 Rails 项目中使用 MariaDB 而不是 MySQL 当我尝试安装 mysql2 gem 时 它返回错误 因为找不到 mysqlclient 这里有一些solution https coderwall com p avjv
  • Javafx PropertyValueFactory 未填充 Tableview

    这让我困惑了一段时间 我似乎无法理解它 我正在使用单元格值工厂填充一个简单的单列表 但它不会填充在表中 确实如此 我单击填充的行 但在其中看不到任何值 在本例中为字符串值 我刚刚编辑了这个以使其更清楚 我有一个不同的项目 它在相同类型的数据