>  기사  >  Java  >  JTable에서 행의 배경색을 새로 고치는 방법은 무엇입니까?

JTable에서 행의 배경색을 새로 고치는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-22 07:23:111011검색

How to Refresh the Background Color of a Row in a JTable?

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 &amp;&amp; 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 &amp;&amp; isRowSelected(row)) {
            continue;
        }

        // ...

        return c;
    }

    // ... Other methods remain the same ...

}

// ... Other code remains the same ...

위 내용은 JTable에서 행의 배경색을 새로 고치는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.