2016-05-04 6 views
1

Ich habe eine JTable. Ich habe setDefaultRenderer verwendet, um einige Zeilen wie diese Farbe:die Zeilen eines JTable akzeptiert die Auswahl nicht

Acueill.jTableProduit.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { 
      @Override 
      public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { 
       super.getTableCellRendererComponent(table, value, false, hasFocus, row, col); 
       final int qte = (int) table.getModel().getValueAt(row, 7); 
       final int min = (int) table.getModel().getValueAt(row, 8); 
       if (qte < min) { 
        setBackground(Color.red); 
       } else { 
        setBackground(table.getBackground()); 
       } 
       return this; 
      } 
     }); 

Aber mein jtable ist die Auswahl Reihen nicht akzeptieren. Wie kann das behoben werden?

+0

Anstatt zu überprüfen, ob die Zeile ausgewählt wurde oder nicht, haben Sie nur die Hintergrundfarbe geändert, die Sie wollten – MadProgrammer

Antwort

0

Wenn Sie die ausgewählten Zeilen halten die Auswahlfarbe haben wollen, versuchen Sie dies:

... 
if (!isSelected && qte < min) { 
    setBackground(Color.red); 
} 
... 
+0

Und wenn es ausgewählt ist, werden Sie ... die Farbe auf die Hintergrundfarbe der Tabelle setzen? – MadProgrammer

1

Es sieht für mich wie Sie einen einzelnen Renderer für Ihre Tabelle zu verwenden versuchen, obwohl Sie haben String und numerischen Daten in verschiedenen Spalten. Das ist keine gute Idee. Normalerweise werden Zahlen anders formatiert und angezeigt als String. Daher müssten Sie für jeden Datentyp in der Tabelle mehrere Renderer erstellen.

Für einen anderen Ansatz, überprüfen Sie Table Row Renderering, die zeigt, wie Sie den Hintergrund einer ganzen Zeile ohne benutzerdefinierten Renderer festlegen können.

Verwandte Themen