Komm irgendwie bei meinem Problem nicht weiter. Ich will, dass Zeilen in meiner JTable, die als fixiert ausgewählt wurden, mit einer Farbe hinterlegen. Dies funktioniert auch wunderbar. Wenn ich jz aber die Table anders sortiere (mit dem TableRowSorter), verändert sich die Farbe nicht mit der ichtigen Zeile mit.
Hab das forum schon durchsucht und eine methode namens convertrowindextomodel gefunden. Doch die bringt mich irgendwie nicht weiter.
Hab einen RowsorterListener, in dem ich den CellRenderer aufrufe. Die jTable wird mit Daten aus einer list (Pl_init.plist1) befüllt.
Mit Pl_init.plist1.getFixiert() frägt man ab, ob eine Zeile fixiert werden soll oder nicht. Die jTable heißt tabtag3.
Hier der Code dazu:
Der CellRenderer:
DANKE FÜR EURE HILFE!!!
Hab das forum schon durchsucht und eine methode namens convertrowindextomodel gefunden. Doch die bringt mich irgendwie nicht weiter.
Hab einen RowsorterListener, in dem ich den CellRenderer aufrufe. Die jTable wird mit Daten aus einer list (Pl_init.plist1) befüllt.
Mit Pl_init.plist1.getFixiert() frägt man ab, ob eine Zeile fixiert werden soll oder nicht. Die jTable heißt tabtag3.
Hier der Code dazu:
Code:
...
sorter.addRowSorterListener(new RowSorterListener(){
public void sorterChanged(RowSorterEvent e) {
tabtag3.setDefaultRenderer(Object.class, new ColorCellRenderer());
tabtag3.repaint();
}
});
...
Der CellRenderer:
Code:
package gui;
/**
*
* @author scheibl
*/
import algorithmus.Pl_init;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
class ColorCellRenderer implements TableCellRenderer {
public static final DefaultTableCellRenderer DEFAULT_RENDERER =
new DefaultTableCellRenderer();
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer =
DEFAULT_RENDERER.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
Color foreground, background;
if (isSelected) {
foreground = table.getSelectionForeground();
background = table.getSelectionBackground();
}
else
{
if(Pl_init.plist1.get(row).getFixiert() == true)
{
foreground = Color.BLACK;
background = Color.getHSBColor((float) 62.3, (float) 0.3, (float) 1.0);
}
else
{
foreground = table.getForeground();
background = table.getBackground();
}
}
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
DANKE FÜR EURE HILFE!!!