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 **
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.
Antwort
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) {/***/}
});
sir it is notwendig, um Zeilen- und Spaltennummern gleich zu haben, um jede Zeile nach db-Wert rply zu färben ... danke –
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
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
ist, aber wir können es für jede Zeile nach Db-Wert verwenden, danke im Voraus –