Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改JTable中第一个单元格的背景色?_Java_Swing_Jtable - Fatal编程技术网

Java 如何更改JTable中第一个单元格的背景色?

Java 如何更改JTable中第一个单元格的背景色?,java,swing,jtable,Java,Swing,Jtable,一切都好吗 我的java应用程序中有下表。 根据状态,他使线条具有某种颜色,我将在下面的代码中显示 我想要的是,只有第一列是彩色的,其他列希望以默认颜色显示 public class PriorityCellRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean i

一切都好吗

我的java应用程序中有下表。 根据状态,他使线条具有某种颜色,我将在下面的代码中显示

我想要的是,只有第一列是彩色的,其他列希望以默认颜色显示

public class PriorityCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);

    //if (Integer.valueOf(1).equals(table.getValueAt(row, 1)) && 0 == column)   && 9 < column)
    if (String.valueOf(1).equals(table.getValueAt(row, 0))) {
        setForeground(Color.BLUE);  // or background
    }
    if (String.valueOf(2).equals(table.getValueAt(row, 0))) {
        setForeground(Color.GREEN);  // or background
    }
    if (String.valueOf(3).equals(table.getValueAt(row, 0))) {
        setForeground(Color.YELLOW);  // or background
    }
    if (String.valueOf(4).equals(table.getValueAt(row, 0))) {
        setForeground(Color.RED);  // or background
    }
    return this;
} 
}
公共类PriorityCellRenderer扩展了DefaultTableCellRenderer{
@凌驾
公共组件GetTableCellRenderComponent(JTable表、对象值、,
布尔值(已选择,布尔值为焦点,整数行,整数列){
super.getTableCellRenderComponent(
表、值、isSelected、hasFocus、行、列);
//if(Integer.valueOf(1).equals(table.getValueAt(行,1))&&0==列)和&9<列)
if(String.valueOf(1).equals(table.getValueAt(行,0))){
设置前景(Color.BLUE);//或背景
}
if(String.valueOf(2).equals(table.getValueAt(行,0))){
设置前景(Color.GREEN);//或背景
}
if(String.valueOf(3).equals(table.getValueAt(行,0))){
设置前景(颜色.黄色);//或背景
}
if(String.valueOf(4).equals(table.getValueAt(行,0))){
设置前景(Color.RED);//或背景
}
归还这个;
} 
}

意识到我的问题了吗

有人能帮我吗

多谢各位

  • 为目标列设置自定义渲染器:

    table.getColumnModel().getColumn(COLUMN_INDEX).setCellRenderer(new PriorityCellRenderer());
    
  • getTableCellRenderComponent()
    validate column index
    if(column==column\u index)

  • 为目标列设置自定义渲染器:

    table.getColumnModel().getColumn(COLUMN_INDEX).setCellRenderer(new PriorityCellRenderer());
    
  • getTableCellRenderComponent()
    validate column index
    if(column==column\u index)


  • 删除其他的if?应该是:
    if(0==列)setBackground(Color.RED)
    谢谢大家的回复。我试过这样做:if(String.valueOf(1).equals(table.getValueAt(row,0))&&column==0){setForeground(Color.BLUE);}但结果是一样的。删除其他if?应该是:
    if(0==column)setBackground(Color.RED)
    谢谢大家的回复。我试过这样做:if(String.valueOf(1).equals(table.getValueAt(row,0))&&column==0{setForeground(Color.BLUE);}但结果是一样的。谢谢你的帮助,先生:)代码发布,描述了qeustion是prepareRenderer()的工作@mKorbel,你是对的,这可以在
    prepareRenderer()中完成
    JTable的方法
    JTable的方法