Frage

Ich habe ein Standard-Tabellen-Rendering wie folgt geschrieben:

public class CustTableRenderer extends DefaultTableCellRenderer{

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
        Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
        try {

            Object cellObj = table.getModel().getValueAt(row, 7); 
            double cellValue = (Double) cellObj;

            if (cellValue < 0) {
                comp.setBackground(new Color(255, 48, 48));
            } else if (cellValue == 0) {
                comp.setBackground(new Color(173, 255, 47));
            } else {
                comp.setBackground(Color.white);
            }

            if (isSelected) {
                comp.setBackground(new Color(71, 60, 139));
                TableModel model = table.getModel();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return comp;
    }
}

Um die Zeilen hervorzuheben, die Minuswerte der Spalte 7 enthalten, habe ich auch setAutoCreateRowSorter auf true gesetzt.Mein Problem ist, wenn ich auf eine Kopfzeile klicke, um sie zu sortieren. Die Tabelle wird sortiert, aber die markierte Zeile wird nicht geändert, daher wird eine falsche Zeile hervorgehoben.

Wie zeichne ich die Tabelle neu, wenn sie sortiert ist?

War es hilfreich?

Lösung

Die in den Renderer übergebenen Koordinaten sind im Ansichtskoordinatensystem, Sie müssen sie in Modellkoordinaten konvertieren, bevor Sie auf das Modell aufrufen: generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top