我一直在为此奋战一段时间,最后想到我需要一些帮助。用Java-FX固定单元大小表
我想创建一个表,其中每个单元显示特定的颜色。这是基于用户选择的图像动态创建的。
我得到它与TilePane一起工作,但由于表的大小,它运行速度非常慢。
目前,我正在尝试使用TableView进行工作。 TableView正在创建,但尚未填充。我创建TableView和我的自定义TableCell类的代码如下。
我的主要问题是:这是最好的方式去做这件事?如果是这样,我做错了什么?
非常感谢您提供我总是在这里看到的真棒协助。
代码来创建的TableView:
private ObservableList<ObservableList<Stitch>> stitchList;
private TableView<Stitch> pattern;
@Override
protected TableView<Stitch> call() throws Exception {
for (int i=0; i< stitchList.size(); i++) {
TableColumn<Stitch, Color> column = new TableColumn<>();
column.setCellValueFactory(new Callback<CellDataFeatures<Stitch, Color>, ObservableValue<Color>>() {
public ObservableValue<Color> call(CellDataFeatures<Stitch, Color> stitch) {
return stitch.getValue().getDisplayColorProperty();
}
});
column.setCellFactory(new Callback<TableColumn<Stitch, Color>, TableCell<Stitch, Color>>() {
@Override public TableCell<Stitch, Color> call(TableColumn<Stitch, Color> list) {
return new StitchCell();
}
});
//Set column sizes
column.setMinWidth(10);
column.setMaxWidth(10);
pattern.getColumns().add(column);
}
return pattern;
} // End Call
代码自定义单元格类
public class StitchCell extends TableCell<Stitch, Color> {
@Override
protected void updateItem(Color color, boolean empty) {
super.updateItem(color, empty);
if (empty || color == null) {
this.setStyle("-fx-background-color: white");
} else {
this.setStyle("-fx-background-color: #" + Integer.toHexString(color.hashCode()));
}
}
}
您是否将任何项目添加到表中的任何位置?您显示添加列的代码,但没有代码实际添加项目。 – 2014-10-27 13:44:17
我在想如何去做。我有一个嵌套的可观察列表的二维数组,但我不知道如何将数据添加到表 – 2014-10-27 16:42:41