好吧,我为TableView创建了一个自定义TableCell。
此自定义TableCell包含一个链接,并在单击时打开浏览器。
一切工作正常,我想做的就是在选中此TableCell时更改其文本颜色...
这就是我想要做的:
callback = new Callback<TableColumn, TableCell>(){
@Override
public TableCell call(TableColumn param) {
return new TableCell<Test, String>(){
EventHandler handler = new EventHandler<MouseEvent>() {
final AM_RSS_FX RSS = AM_RSS_FX.this;
@Override
public void handle(MouseEvent param) {
try {
java.awt.Desktop.getDesktop().browse(new URI(RSS.link));
} catch (IOException | URISyntaxException ex) {
Logger.getLogger(AM_RSS_FX.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
@Override
public void updateItem(String item, boolean empty){
super.updateItem(item, empty);
if(!isEmpty()){
final AM_RSS_FX RSS = AM_RSS_FX.this;
this.setTextFill(Color.BLUE);
setText(item);
RSS.link = this.getText();
this.addEventHandler(MouseEvent.MOUSE_CLICKED, handler);
}
}
@Override
public void updateSelected(boolean arg0){
super.updateSelected(arg0);
if(isSelected()){
this.setTextFill(Color.AQUA);
}
}
};
}
};
我不知道我需要重写哪种方法= /
我试图覆盖updateSelected,但没有成功= /
有人能帮我吗?
最佳答案
1-您在TableCell
实例上添加了一个鼠标事件处理程序,单击该事件时将触发该事件。但是,仍未选择表格单元格。而是触发了表行单元格选择。要启用单元格选择,请执行以下操作:
table.getSelectionModel().setCellSelectionEnabled(true);
2-无需重写
updateSelected()
即可管理样式,而使用caspian.css中的CSS选择器:.table-cell:selected {
-fx-background-color: lightgreen;
-fx-text-fill: green;
}
关于colors - 选择JavaFX TableCell颜色后如何更改它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12199673/