我一直在爲此奮戰一段時間,最後想到我需要一些幫助。用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