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 && 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 && 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!