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 중국어 웹사이트의 기타 관련 기사를 참조하세요!