【问题标题】:How to fill TableColumns with the User object information?如何用 User 对象信息填充 TableColumns?
【发布时间】:2018-04-14 17:54:01
【问题描述】:

我有一个 TableView,里面有 TableColumns(Screenshot of the program)

该方法接收用户(潜在朋友)的 ArrayList。对象用户由全名、电子邮件、爱好、专业和匹配分数组成。我想用 ArrayList 中每个用户对象的信息填充表。具体是怎么做的?我做了一些研究,但似乎没有任何效果。 这是一段代码,如果有帮助的话:

public class AlgorithmController {

@FXML
private TableView<User> table;
@FXML
private TableColumn<User,String> nameCol;
@FXML
private TableColumn<User,String> majorCol;
@FXML
private TableColumn<User,String> mailCol;
@FXML
private TableColumn<User,String> hobbyCol;
@FXML
private TableColumn<User,String> scoreCol;
private User user;
private ArrayList<User> potentialFriends;


public void initialize(){
    DatabaseStack database = new DatabaseStack();
    MatchingAlgorithm testAlg = new MatchingAlgorithm(database.getDatabase());
    user = Mediator.getInstance().getUser();
    potentialFriends = testAlg.findAFriendAlgorithm(user,0,database.getDatabase().size());

}}

感谢您的时间和精力!

【问题讨论】:

  • 您是否在ControllerFXML 文件之间正确绑定(注入)了TableColumn
  • @BoHalim 是的,我只是不知道如何用信息填充列。

标签: java javafx tableview tablecolumn


【解决方案1】:

为每一列设置 cellValueFactory。 例如,

nameCol.setCellValueFactory(new PropertyValueFactory<User,String>("Specify nameCol variable name the same as in User class"));

然后添加数组列表。

table.setItems(potentialFriends);

如果添加数组列表不起作用,请尝试使用ObservableList 而不是ArrayList

【讨论】:

  • 应该是table.getItems().setAll(potentialFriends),因为potentialFriends 不是ObservableList。看Javadocs for PropertyValueFactory了解构造函数参数是怎么用的(不一定是“变量名”)。
  • 我收到一个错误:“警告:无法在 PropertyValueFactory 中检索属性 'Ethan White':javafx.scene.control.cell.PropertyValueFactory@3a5bb0a1 提供的类类型:类 FindAFriend.User java。 lang.IllegalStateException:无法从不可读的属性 Ethan White 中读取”。有什么问题?我完全按照你说的做了。
  • @DmytroMarych 我得到了这个错误,并意识到我的 bean 有默认访问修饰符而不是公共的!天哪,太烦人了,太明显了,我从没想过要在那里看 2 个小时哈!
猜你喜欢
  • 2020-08-03
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多