我只有一列TableView显示带有图标的标签。我想做的是在标签或单元格中添加一个动画图标,以便用户知道它正在加载。我不确定该怎么做。我环顾了互联网,却一无所获。我没有运气尝试扩展标签和自定义绘图,它没有覆盖绘画方法那么直接。因此,如果有人能为我指出如何实现这种效果的正确方向。
答案 0 :(得分:0)
我认为您无法执行此操作,因为单元格渲染器将在单元格之间移动并为每个单元格调用绘制。因此,我认为您不能这样做并显示动画图标。您可以做的是更改正在加载的行的某些属性并调用转换。 您可以从这段代码中获得一些想法,并获得类似的效果:
https://github.com/james-d/Animated-Table-Row/blob/master/src/animatedtablerow/AnimatedTableRow.java
答案 1 :(得分:0)
我应该已经发布了这个,但是如果其他想要做类似事情的人想到了,这就是我的解决方案:
sourceColumn.setCellFactory(new Callback<TableColumn<SourceItem, SourceItem>,TableCell<SourceItem, SourceItem>>(){
public TableCell<SourceItem, SourceItem> call(TableColumn<SourceItem, SourceItem> param){
TableCell<SourceItem, SourceItem> cell = new TableCell<SourceItem, SourceItem>(){
@Override
public void updateItem(SourceItem item, boolean empty) {
if (!empty) {
HBox box = new HBox();
box.setAlignment(Pos.CENTER_LEFT);
Region spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS);
box.getChildren().addAll(item.getLabel(), spacer);
if (item instanceof ShareSourceItem) {
if (((ShareSourceItem)item).isResolving()) {
box.getChildren().addAll(loadImage(mediaPath+"loader2.gif"));
}
}
setGraphic(box);
}
}
};
return cell;
}
});