我有一个很大的问题。
我尝试将TableColumn的内容集中在TableView中。
我已经尝试过在网上找到的所有内容,但实际上没有任何效果!
是否有人有/有同样的问题?任何解决方案?
希望得到帮助!
编辑:
我能用这段代码集中静态单元格的内容:
tc_customer.setCellFactory(new Callback<TableColumn<TvAccounting, String>, TableCell<TvAccounting, String>>() {
@Override
public TableCell<TvAccounting, String> call(TableColumn<TvAccounting, String> p) {
TableCell<TvAccounting, String> tc = new TableCell<TvAccounting, String>();
tc.setAlignment(Pos.CENTER);
tc.setText("SOMETEXT");
return tc;
}
});
但是内容应该来自数据库,我真的不知道如何从我在TABLEVIEWNAME.setItems
方法中使用的ObservableList对象中获取数据...
我首先使用了这段代码:
tc_customer.setCellValueFactory(new PropertyValueFactory<TvAccounting, String>("Customer"));
但没有办法将这些内容集中在一起!
请有人帮助我吗?
编辑:
感谢这个伟大的答案,我做到了!
以下代码:
tc_customer.setCellFactory(new Callback<TableColumn<TvAccounting, String>, TableCell<TvAccounting, String>>() {
@Override
public TableCell<TvAccounting, String> call(TableColumn<TvAccounting, String> p) {
TableCell<TvAccounting, String> tc = new TableCell<TvAccounting, String>(){
@Override
public void updateItem(String item, boolean empty) {
if (item != null){
setText(item);
}
}
};
tc.setAlignment(Pos.CENTER);
return tc;
}
});
tc_customer.setCellValueFactory(new PropertyValueFactory<TvAccounting, String>("Customer"));
最好的感谢!!!
答案 0 :(得分:3)
CellValueFactory和CellFactory是两回事。 CellValueFactory用于指定值的来源,而CellFactory指定它们如何显示。
同时使用两者。但在setCellFactory
代码中,您应不执行setText
。设置文本将由TableCell
方法中的updateItem()
代码处理。此方法将使用“cellValueFactory”提供的值,并将其设置在自己的标签内。
tc_customer.setCellFactory(
new Callback< TableColumn<TvAccounting, String>,
TableCell<TvAccounting, String>>()
{
@Override public TableCell<TvAccounting, String>
call(TableColumn<TvAccounting, String> p) {
TableCell<TvAccounting, String> tc =
new TableCell<TvAccounting, String>();
tc.setAlignment(Pos.CENTER);
// tc.setText("SOMETEXT"); This line should be removed
return tc;
}
}
);