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

Bagaimana untuk Menyegarkan Warna Latar Belakang Baris dalam JTable?

DDD
Lepaskan: 2024-11-22 07:23:11
asal
1049 orang telah melayarinya

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);
    }
}
Salin selepas log masuk

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

if (rowSelection != null &amp;&amp; isRowSelected(row)) {
    continue;
}
Salin selepas log masuk

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 ...
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan