刷新 JTable 中的行的背景顏色
問題:
嘗試刷新背景顏色時JTable中的一行,它僅在第一次迭代時有效且失敗
解決方案:
出現此問題是因為ColorTable 類別中的setRowColor 方法沒有重置後續行的背景顏色。要解決此問題,應修改程式碼如下:
public void resetColor(Color color) { for (int i = 0; i < this.getRowCount(); i++) { // Reset all rows to the specified color this.setRowColor(i, color); } }
此外,為了防止所選行被著色,應在prepareRenderer方法中添加以下行:
if (rowSelection != null && isRowSelected(row)) { continue; }
這可確保所選行保持其預設背景顏色。
範例程式碼:
// Import necessary libraries... public class ColorTable extends JTable { private static final long serialVersionUID = 1L; private Map rowColor = new HashMap(); private Map columnColor = new HashMap(); private Color cellColor; private Color defaultColor; public ColorTable(TableModel model) { super(model); } public void setRowColor(int row, Color c) { rowColor.put(new Integer(row), c); } // ... Other methods remain the same ... @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); if (defaultColor == null) { defaultColor = c.getBackground(); } // Color order is as follows: // rowSelection, checkBox toggle for row color, column color, cell color if (rowSelection != null && isRowSelected(row)) { continue; } // ... return c; } // ... Other methods remain the same ... } // ... Other code remains the same ...
以上是如何刷新JTable中某行的背景顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!