gpt4 book ai didi

java - 将鼠标悬停在另一个单元格上时如何删除 JTable 单元格 bgColor?

转载 作者:行者123 更新时间:2023-11-30 05:11:35 25 4
gpt4 key购买 nike

我为 JTable 列创建了自己的 TableCellEditor,以便在编辑该列的单元格时执行一些特殊操作。

在该 TableCellEditor 中,当该列中的单元格悬停时,我定义了一种颜色,如下所示:

public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) {  
if( isSelected ) // User clicked on this cell.
setBackground( selectedRowBG );
else if( rowIndexToHighlight == row ) // user is hovering on this cell.
setBackground( hoveredRowBG );
else // Set default cell color.
setBackground( unHoveredRowBG );

return this;
}

我的问题是,当我将鼠标悬停在该特殊列中的单元格上时,单元格背景颜色变为“hoveredRowBG”,然后如果我将鼠标移动到另一列中的单元格或移动到表中的空白区域(没有行),特殊单元格 bgColor 仍然具有“hoveredRowBG”颜色。 我想在发生此类操作时删除该悬停颜色。

有什么想法吗?

最佳答案

只需将实际突出显示的行存储在某处,并在悬停时测试它是否已更改。如果是,则取消突出显示最后一个突出显示的内容并存储实际的内容。 lastHighlightedRow 在我的示例中是一个字段,您可能需要另一个位置来存储该值。

public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) {  
if( isSelected ) // User clicked on this cell.
setBackground( selectedRowBG );
else if( rowIndexToHighlight == row ) { // user is hovering on this cell.
if (!(lastHighlightedRow == this)) {
lastHighlightedRow.setBackground(unHoveredRowBG);
lastHighlightedRos = this;
}
setBackground( hoveredRowBG );
}

return this;
}

关于java - 将鼠标悬停在另一个单元格上时如何删除 JTable 单元格 bgColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com