自定义标签带有2个图标?

时间:2019-04-26 23:10:23

标签: java javafx

我只有一列TableView显示带有图标的标签。我想做的是在标签或单元格中添加一个动画图标,以便用户知道它正在加载。我不确定该怎么做。我环顾了互联网,却一无所获。我没有运气尝试扩展标签和自定义绘图,它没有覆盖绘画方法那么直接。因此,如果有人能为我指出如何实现这种效果的正确方向。

https://i.imgur.com/vJ3HDyf.png

2 个答案:

答案 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;
        }

    });