当鼠标在表格中输入一行时,我希望该行中的每一列颜色都变为蓝色。
我这样做了,它改变了,但它只改变时,我按下我的鼠标,而不是当我的鼠标进入它。
private void changeColorTableCell(JTable tbl, int index) {
tbl.getColumnModel().getColumn(index).setCellRenderer(new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(Color.BLUE);
return c;
}
});
}
private void tabelPesananMouseEntered(java.awt.event.MouseEvent evt) {
int count = tabelPesanan.getColumnModel().getColumnCount();
for(int i = 0; i < count; i++) {
changeColorTableCell(tabelPesanan, i);
}
}
如何改变一切 JTable
鼠标输入时列的颜色?
1条答案
按热度按时间bz4sfanl1#
getColumn(index).setCellRenderer(…)
不起作用。如果要更改整行的颜色,不能只更改一列的渲染器。虽然可以设置默认渲染器,也可以设置每列的单元格渲染器,但更好的选择是覆盖preparerenderer,这样除了背景色之外,其他任何渲染器都不会受到影响。