我遇到了第一个 Hyperlink
在 TableCell
顶部对齐的问题。
我几乎尝试了所有方法,但无法使其工作。
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;
}
}
最佳答案
我不知道为什么会发生这种情况,但如果在单元格变空时通过将其设置为 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
}
}
关于java - TableCell 超链接在 TableView 上未正确对齐 - JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40787182/