如何将我的JTable中第一行的颜色设置为黄色(或任何颜色)?

我可以将一列设置为黄色但我无法将行设置为黄色。

以下代码用于列:

TableColumn col = mytable.getColumnModel().getColumn(0); col.setCellRenderer(new MyTableCellRenderer()); 

请问我怎么连续做?

我已经在网上尝试了教程和示例,但它总是将整个表格描绘成黄色而不是仅仅一行。

谢谢

您需要做的是生成自定义TableCellRenderer。 请参阅本教程了解详细信息 您的渲染器将需要测试传入的行索引并确定它是否为行0。

  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (row == 0) { setBackground(myBGColor) } .... 

从“如何使用表格”教程 :

要指定特定于单元格的渲染器,需要定义一个覆盖getCellRenderer方法的JTable子类。 例如,以下代码使表的第一列中的第一个单元格使用自定义渲染器:

 TableCellRenderer weirdRenderer = new WeirdRenderer(); table = new JTable(...) { public TableCellRenderer getCellRenderer(int row, int column) { if ((row == 0) && (column == 0)) { return weirdRenderer; } // else... return super.getCellRenderer(row, column); } }; 

你可以简单地检查row == 0 then使用你自己的渲染器, else使用默认值。

我通常通过实现包装另一个TableCellRenderer的装饰器风格的TableCellRenderer实现来解决这个问题。 这样,您可以为每列保留特定于类型的渲染器,但将每个渲染器包装在负责行突出显示的装饰器渲染器中。

这是我写的一个例子,它使用这种方法将每个备用行的背景设置为浅灰色。

 public class AlternateRowRenderer implements TableCellRenderer { private final TableCellRenderer wrappedRenderer; public AlternateRowRenderer(TableCellRenderer wrappedRenderer, Color highlightColour) { this.wrappedRenderer = wrappedRenderer; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component ret = wrappedRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); ret.setBackground(getTableBackgroundColour(table, value, isSelected, hasFocus, row, column)); return ret; } @SuppressWarnings({"UnusedDeclaration"}) public static Color getTableBackgroundColour(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Color ret; if (row % 2 != 0) { ret = isSelected ? ColourUtil.mergeColours(LIGHT_GREY, table.getSelectionBackground(), 0.75) : LIGHT_GREY; } else { ret = isSelected ? table.getSelectionBackground() : table.getBackground(); } return ret; } } 

要轻松设置备用行颜色,可以使用SwingX创建JXTable(与JTable相同+一些很酷的额外function),如:

 myTabModel = new MyTableModel(); tab = new JXTable(myTabModel); Color baseBackground = new Color(0,0,0,0); // no color Color alternateBackround = new Color(250,150,250,100); // a fading purple color tab.setHighlighters(HighlighterFactory.createAlternateStriping(baseBackground,alternateBackround); 

请注意,第1行将具有baseBackground颜色

希望能帮助到你

您可以为jtable行设置备用颜色。请查看zybocodes