2012-03-30 7 views
1
  1. Ich möchte jede Zeilen der Tabelle färben, durch bestimmte Werte von Datenbank mitOptionen statt JTable

    spcification of mine database is some what like 
    
        ** 
        id  name color 
        1  pavan red 
        2  xyz  white 
        ** 
    
  2. i eine Farbtabelle zu vervollständigen geben kann

    table.setBackground(new color(158,145,134);  
    
    
    
    
        please provide me some solution or hint to approch towards answer, 
        Thanks in advance. 
    
mit
+10

Warum Sie sagen, es ist schwer anzuwenden auf JTabelle? Hast du [dieses Tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer) überprüft? – assylias

+1

JXTable (aus dem SwingX-Projekt) hat Unterstützung für Textmarker und enthält standardmäßig einen Zeilenmarker mit alternierenden Zeilen, so dass diese Anforderung fast ein Einzeiler – Robin

+0

ist, aber wir können es für jede Zeile nach Db-Wert verwenden, danke im Voraus –

Antwort

4

Das ist überhaupt nicht schwer mit einem JTable! In der Tat ist es unglaublich einfach!

Siehe meine Antwort hier: Highlight a cell in JTable via custom table model

für eine einfache Wiedergegeben:


... Subclass JTable und JTable.preparedRenderer(TableCellRenderer renderer, int row, int column) außer Kraft setzen. Wenn die Nummern row und column identisch sind, können Sie die Hintergrundfarbe des als Anzeige zurückgegebenen Component ändern (normalerweise JLabel);

Hier ist ein Beispiel, das die Reihe hebt sich die Maus über ist:

@Override 
public Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) { 
    final Component c = super.prepareRenderer(renderer, row, column); 
    if (row == this.itsRow) { 
     c.setBackground(Color.RED); 
    } 
    return c; 
} 

wo this.itsRow ein int Feld von einem MouseMotionListener aktualisiert ist:

this.addMouseMotionListener(new MouseMotionListener() { 
     public void mouseMoved(MouseEvent e) { 
      SubclassedJTable.this.itsRow = SubclassedJTable.this.rowAtPoint(e.getPoint()); 
      SubclassedJTable.this.repaint(); 
     } 
     public void mouseDragged(MouseEvent e) {/***/} 
    }); 
+0

sir it is notwendig, um Zeilen- und Spaltennummern gleich zu haben, um jede Zeile nach db-Wert rply zu färben ... danke –