Rumah >Java >javaTutorial >Bagaimana untuk Menyegarkan Warna Latar Belakang Baris dalam JTable?

Bagaimana untuk Menyegarkan Warna Latar Belakang Baris dalam JTable?

DDD
DDDasal
2024-11-22 07:23:111062semak imbas

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

Menyegarkan Warna Latar Belakang untuk Baris dalam JTable

Isu:
Apabila cuba menyegarkan warna latar belakang daripada satu baris dalam JTable, ia hanya berfungsi pada lelaran pertama dan gagal kemudiannya.

Penyelesaian:

Isu timbul kerana kaedah setRowColor dalam kelas ColorTable tidak menetapkan semula warna latar belakang untuk baris berikutnya. Untuk menyelesaikan masalah ini, kod harus diubah suai seperti berikut:

public void resetColor(Color color) {
    for (int i = 0; i < this.getRowCount(); i++) {
        // Reset all rows to the specified color
        this.setRowColor(i, color);
    }
}

Selain itu, untuk mengelakkan baris yang dipilih daripada diwarnakan, baris berikut harus ditambah dalam kaedah prepareRenderer:

if (rowSelection != null &amp;&amp; isRowSelected(row)) {
    continue;
}

Ini memastikan baris yang dipilih mengekalkan warna latar belakang lalainya.

Contoh Kod:

// 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 ...

Atas ialah kandungan terperinci Bagaimana untuk Menyegarkan Warna Latar Belakang Baris dalam JTable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn