TableCell超链接在TableView上没有正确对齐 - JavaFX

时间:2016-11-24 13:05:17

标签: java javafx

我遇到此问题,Hyperlink之上的第一个TableCell对齐 我已经尝试了几乎所有的东西而且我无法让它发挥作用。

IMAGE

colData.setCellFactory(e -> {
        return new TableCell<TabelaShitjet, Hyperlink>(){
            @Override
            protected void updateItem(Hyperlink item, boolean empty) {
                super.updateItem(item, empty);
                if (!empty){
                    item.setOnAction(e -> {
                        TeDhenatBlerjes(Integer.parseInt(getTableView().getColumns().get(0).getCellData(getTableRow().getIndex())+""), item.getText());
                    });
                    setGraphic(item);
                }
            }
        };
    });

构造

public class TabelaShitjet {
    private Hyperlink data;

    public TabelaShitjet(String data){
        this.data = new Hyperlink(data);
    }

    public Hyperlink getData() {
        return data;
    }

    public void setData(Hyperlink data) {
        this.data = data;
    }
}

1 个答案:

答案 0 :(得分:1)

我不知道为什么会发生这种情况,但是如果在单元格变为空时通过将其设置为null来删除图形,则问题似乎已得到解决。

当在updateItem的调用中添加项目时,您应该撤消对单元格所做的任何修改,否则单元格将变为空,否则空单元格可能会显示为非空白:

@Override
protected void updateItem(Hyperlink item, boolean empty) {
    super.updateItem(item, empty);
    if (!empty){
        item.setOnAction(e -> {
            TeDhenatBlerjes(Integer.parseInt(getTableView().getColumns().get(0).getCellData(getTableRow().getIndex())+""), item.getText());
        });
    }

    // set graphic every time i.e. set it to null for empty cells
    setGraphic(item);
}

通常,updateItem方法应该像这样实现:

@Override
protected void updateItem(ItemType item, boolean empty) {
    super.updateItem(item, empty);
    if (empty) {
        // undo any updates that could have been made
        // to make the cell look different from the empty cell
    } else {
        // update cell to display item
    }
}