Haupt-Klasse:Ändern Farbe einer JTable Zeile Laufzeit eine andere Klasse und Methoden
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewMDIApplication().setVisible(true);
new TestTable();
}
});
}
public JTable getMyJTable() {
return jTable2;
}
Andere Klasse:
package javaapplication9;
import java.awt.Color;
import javax.swing.table.DefaultTableModel;
public class TestTable extends NewMDIApplication {
public NewMDIApplication obj=new NewMDIApplication();
public TestTable() {
final DefaultTableModel model = (DefaultTableModel) obj.getMyJTable().getModel();
obj.getMyJTable().setModel(model);
obj.getMyJTable().setDefaultRenderer(obj.getMyJTable().getClass(), new MyCellRenderer());
}
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, 1);
String sval = val.toString();
if (sval.equalsIgnoreCase("A")) {
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;
}
}
}
Dieses Programm läuft .... aber nicht angezeigt irgendein Fehler. Wenn ich jedoch einige Daten der Tabelle über das Kombinationsfeld bearbeite, ändert sich die Farbe der Tabelle zur Laufzeit nicht.
Was wäre eine Lösung für dieses Problem?
Veröffentlichen Sie Ihre [mcve], die das Problem aufzeigt. Erstellen Sie eine einfache Tabelle mit fest codierten Daten und fügen Sie den Renderer der Tabelle hinzu. – camickr