Hi,
ich verwende swingX und möchte die Selektierung meiner Tabelle transparent machen, d.h. wenn eine Zeile(oder Zelle) bereits mit einer Farbe eingefärbt ist und die Zeile selektiert wird, dass immer noch ersichtlich bleibt in welcher Farbe die Zeile bzw. Zelle eingefärbt ist.
Ich konnte es bereits teilweise mittels eines Renderers lösen:
In meinem Formular hab ich dann noch setSelectionBackground(null) gesetzt und nachdem die Tabelle gefüllt wurde setze ich die erste Zeile als selektiert.
Allerdings hab ich jetzt sporadisch das Problem, dass die Selektierung der ersten Zeile nicht eingefärbt wird. Wenn ich mit der Maus rollover über die erste Zeile gehe, wird die Selektierung gezeichnet. Fehlt mir irgendwo ein repaint()?
ich verwende swingX und möchte die Selektierung meiner Tabelle transparent machen, d.h. wenn eine Zeile(oder Zelle) bereits mit einer Farbe eingefärbt ist und die Zeile selektiert wird, dass immer noch ersichtlich bleibt in welcher Farbe die Zeile bzw. Zelle eingefärbt ist.
Ich konnte es bereits teilweise mittels eines Renderers lösen:
Java:
public class MyTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int view_row, int col) {
// call super-method to set this
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, view_row, col);
// set background properly
if (isSelected) {
this.setBackground(table.getSelectionBackground());
paint = Form.getDarkerColor((Color)paint, 0.15);
}
else
this.setBackground(table.getBackground());
}
public void paint(Graphics arg0) {
if (paint != null){
Graphics2D g = (Graphics2D)arg0;
g.setPaint(paint);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
super.paint(arg0);
}
}
In meinem Formular hab ich dann noch setSelectionBackground(null) gesetzt und nachdem die Tabelle gefüllt wurde setze ich die erste Zeile als selektiert.
Allerdings hab ich jetzt sporadisch das Problem, dass die Selektierung der ersten Zeile nicht eingefärbt wird. Wenn ich mit der Maus rollover über die erste Zeile gehe, wird die Selektierung gezeichnet. Fehlt mir irgendwo ein repaint()?