Legen Sie die Hintergrundfarbe für die Zeile der JTable zur Laufzeit
Ich arbeite mit netbeans IDE7.4, ich bin das hinzufügen von Zeilen für die JTable
zur Laufzeit, und jetzt will ich, um den hintergrund Farbe für eine bestimmte Zeile.
Nun das problem ist, dass wenn der Wert dieser Zeile geändert wird die Farbe der jeweiligen Zeile wird nicht geändert und wenn ich nach oben oder unten, der Tisch, der die änderungen übernommen werden.
Gewusst wie: aktualisieren Sie die Tabelle zur Laufzeit? Wie setzen Sie die Hintergrundfarbe von Zeile zur Laufzeit?
Dies ist der renderer-Klasse bin verwenden für die Färbung bestimmten Zeile:
public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer
{
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
final java.awt.Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object val=table.getValueAt(row, 2);
String sval=val.toString();
sval=sval.replaceAll(":","");
int ival=Integer.parseInt(sval);
if(ival==0)
{
cellComponent.setForeground(Color.black);
cellComponent.setBackground(Color.red);
}
else
{
cellComponent.setBackground(Color.white);
cellComponent.setForeground(Color.black);
}
if (isSelected)
{
cellComponent.setForeground(table.getSelectionForeground()); cellComponent.setBackground(table.getSelectionBackground());
}
return cellComponent;
}
}
bin und die Zuordnung zu jtable so :
newViewTable.setDefaultRenderer(Object.class,new MyCellRenderer());
newViewTable ist der name von JTable.
- Können Sie stellen einer lauffähigen Beispiel, das zeigt Ihr problem?
- Für bessere Hilfe früher, poste ein MCTaRE (Minimal Getestet und Lesbar Beispiel).
- Siehe die Antwort
- Wie werden Sie die Tabelle zu aktualisieren,/Modell (so wird es ändern die Zelle rendering-Eigenschaften)?
- Warum Folgen Sie nicht den Rat, den ich angeboten und nach ein MCTaRE eher als schlecht formatiert (nicht lesbar) - code, der nicht ausgeführt werden kann, und daher ist ein Beispiel der nichts?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Irgendwann müssen Sie auf den Tisch, dass der Inhalt in irgendeiner Weise geändert wurde.
Wenn Sie einen
TableModel
basierend aufAbstractTableModel
verwenden, können Sie diefireTableXxx
Veranstaltungen, wie zum BeispielfireTableCellUpdate(row, col)
. Diese informieren dieJTable
dass das Modell geändert wurde und dazu führen, dass repaint den Tisch...Möchten Sie vielleicht zu prüfen, mit
fireTablesRowsUpdated
da dadurch dieJTable
um die gesamte Zeile aktualisieren.Wenn Sie
setValueAt
auf das Modell, um den Wert zu ändern, müssen Sie rufen Sie das entsprechende Ereignis auslösen...Aktualisiert mit fließendem Beispiel
So, basierend auf die Sie
MyCellRenderer
- renderer, habe ich dieses Beispiel, und es funktioniert gut...Die Frage ist jetzt, was machst du anders????
Verwenden Sie eine Tabelle, Zelle renderer. Sehen Wie Verwenden von Tabellen: die Verwendung von Custom Renderer für details.