我遇到此问题,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;
}
}
答案 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
}
}