Colors 选择JavaFX TableCell时,如何更改其颜色?

Colors 选择JavaFX TableCell时,如何更改其颜色?,colors,javafx,selected,tablecell,Colors,Javafx,Selected,Tablecell,嗯,我为我的TableView创建了一个自定义TableCell。 此自定义TableCell包含一个链接并在单击时打开浏览器。 一切都很好,我想做的是改变这个表格单元格的文本颜色时,它被选中。。。 这就是我想做的: callback = new Callback<TableColumn, TableCell>(){ @Override public TableCell call(TableColumn param) {

嗯,我为我的TableView创建了一个自定义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);
                    }
                }

            };
        }
    };
callback=newcallback(){
@凌驾
公共TableCell调用(TableColumn参数){
返回新的TableCell(){
EventHandler=新的EventHandler(){
最终AM_RSS_FX RSS=AM_RSS_FX.this;
@凌驾
公共无效句柄(MouseEvent参数){
试一试{
java.awt.Desktop.getDesktop().browse(新URI(RSS.link));
}catch(IOException | URISyntaxException ex){
Logger.getLogger(AM_RSS_FX.class.getName()).log(Level.SEVERE,null,ex);
}
}
};
@凌驾
public void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
如果(!isEmpty()){
最终AM_RSS_FX RSS=AM_RSS_FX.this;
这个.setTextFill(Color.BLUE);
setText(项目);
RSS.link=this.getText();
this.addEventHandler(MouseEvent.MOUSE_单击,处理程序);
}
}
@凌驾
已选择公共无效更新(布尔值arg0){
super.updateSelected(arg0);
if(isSelected()){
这个.setTextFill(Color.AQUA);
}
}
};
}
};
我不知道我需要覆盖哪个方法=/ 我试图覆盖所选的更新,但没有成功=/


有人能帮我吗?

1-您正在
TableCell
实例上添加一个鼠标事件处理程序,当您单击它时,该事件将触发。但是,仍然没有选择表格单元格。相反,正在触发表单元格选择。要启用单元格选择,请执行以下操作:

table.getSelectionModel().setCellSelectionEnabled(true);
2-无需覆盖
updateSelected()
来管理样式,而是使用caspian.CSS中的CSS选择器:

.table-cell:selected {
    -fx-background-color: lightgreen;
    -fx-text-fill: green;
}