Java 用另一种颜色为jtable中的选定行添加颜色
我使用此代码按不同的颜色为ly jtable的行着色:Java 用另一种颜色为jtable中的选定行添加颜色,java,swing,jtable,rendering,selection,Java,Swing,Jtable,Rendering,Selection,我使用此代码按不同的颜色为ly jtable的行着色: table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row
table.setDefaultRenderer(Object.class, 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(row % 2 == 0 ? Color.WHITE : Color.LIGHT_GRAY);
return c;
}
});
它可以工作,现在我想用以下颜色将用户选择的行颜色设置为与上述颜色不同的另一种颜色:
table.setSelectionBackground(Color.RED);
但它能做任何事
我怎样才能做到这一点
提前感谢您您的渲染器正在覆盖由
DefaultTableCellRenderer应用的颜色更改
试试像
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected) {
c.setBackground(row % 2 == 0 ? Color.WHITE : Color.LIGHT_GRAY);
}
相反,您可以根据需要使用
getSelectedRow()
或getSelectedColumn()
。例如:
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
comp.setForeground(Color.BLACK); // Default colour of cell
if (this.getSelectedRow() == row || this.getSelectedColumn() == column) return comp;
else {
.... // Other formatting rules here
}
return comp;
}
@如果答案有帮助,请接受并投票表决。