这让我困惑了一段时间,我似乎无法掌握它.我正在使用Cell Value Factory来填充一个简单的一列表,它不会填充在表中.
它确实和我点击了已填充的行,但我没有看到任何值 - 在本例中为String值.[我刚刚编辑了这个以使它更清晰]
我有一个不同的项目,它在同一种数据模型下工作.我究竟做错了什么?
这是代码.最后评论的代码似乎工作.我已经检查过是否存在通常的错误 - 创建新的列实例或新的tableview实例.没有.请帮忙!
//简单数据模型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);
}
}
Run Code Online (Sandbox Code Playgroud)
// Controller类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 …
Run Code Online (Sandbox Code Playgroud) 今天我在尝试学习JavaFX和Java的更多内容时遇到了另一件我并不理解的事情.
参考是以下教程(我试图将原理应用于组织者):
我将简要介绍一下我有问题的特定部分:
我的主窗口包含一个tableview,显示一些约会数据.所以我得到了一些这种风格的线条(与教程中相同):
aColumn.setCellValueFactory(cellData ->cellData.getValue().getAColumnsProperty());
Run Code Online (Sandbox Code Playgroud)
可以通过额外的EditDialog操纵数据.这很好用.如果我编辑的东西,立即显示更改,但我做了一些额外的研究,以更好地了解Lambda(不太成功).现在......在线java文档Java Doc PropertyValueFactory中说:"Callback-Interface的一个便利实现,[...]"
所以我将我的代码重构为这种风格:
aColumn.setCellValueFactory(new PropertyValueFactory<Appointment,LocalDate>("date"));
Run Code Online (Sandbox Code Playgroud)
我发现它比Lambda更具可读性.但我注意到,当我进行更改时,我需要在显示更改之前对TableView进行一些排序.
是否有可能在第二种方法中立即显示变化?
如果是的话:是否存在阻碍这种修改的重大缺陷?也就是Lambda是这种情况下的最佳实践?
我感谢任何帮助.
记录是Java 16的一项新功能。在JEP 395:记录中定义。
假设您有这样的记录。
public record Person(String last, String first, int age)
{
public Person()
{
this("", "", 0);
}
}
Run Code Online (Sandbox Code Playgroud)
这是最后一堂课。它自动生成 getter 方法first()、last() 和age()。
现在这是 JavaFX 中的 TableView。
/**************************************************
* Author: Morrison
* Date: 10 Nov 202021
**************************************************/
import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.TableView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.PropertyValueFactory;
public class TV extends Application
{
public TV()
{
}
@Override
public void init()
{
}
@Override
public void start(Stage primary) …
Run Code Online (Sandbox Code Playgroud) 我需要将日期属性传递给 setCellValueFactory ,这是我的 seters 和 geters 的代码Persona class
,正确的方法是什么,我认为我在正确的声明中遇到了问题,所以我在这里需要一个真正的方向,我需要在java.sql.date类中声明一些日期,可以参考一下吗?任何想法?。请在这里提供一点帮助。
package application;
import java.time.LocalDate;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class Persona {
private StringProperty nombres;
private StringProperty apellidos;
private IntegerProperty id_cliente;
private ObjectProperty <LocalDate>fechacliente;
public Persona ( String nombres, String apellidos, Integer id_cliente, Object fechacliente) {
this.nombres= new SimpleStringProperty (nombres);
this.apellidos= new SimpleStringProperty ( apellidos);
this.id_cliente=new SimpleIntegerProperty (id_cliente);
this.fechacliente= new SimpleObjectProperty<LocalDate>();
}
public Object getFecha() {
return fechacliente.get();
}
public void setFecha(Object …
Run Code Online (Sandbox Code Playgroud)