Hej! Tjena, du har säkert löst ditt problem redan... Men iaf: (EJ TESTAD KOD!!!)Rader i en JTable
Jag har en JTable som presenterar resultat av en databassökning.
Jag vill att vissa rader skall presenteras annorlunda (t ex röd text) än andra beroende på resultatvärden. Jag har viss svårighet med detta. Jag försökte lägga till JLabels med ändrad färg istället för String-objekt men min JTable lyckades inte visa dessa utan skrev ut objektvärden istället.
Hur får jag programmet att visa textsträngarna med annan färg? Skall jag använda en modifierad CellRenderer?
Jag får uppfattningen att det är lättare att ställa in gemensamma egenskaper för kolumner än för rader, men det måste ju gå att lösa på nåt sätt.
Tacksam för svar!
/Johannes JonssonSv: Rader i en JTable
Som du var inne på så använder du dig av en label(ärver).
Det du måste göra (om du inte gör det redan) är att overrida metoden getTableCellRendererComponent (se nedan).
Sedan sätter du bara cellrenderer på din table:
CellColorRenderer cellColorRenderer = new CellColorRenderer();
for(int i=0;i<table.getColumnCount();i++){
table.getColumnModel().getColumn(i).setCellRenderer(cellColorRenderer);
}
class CellColorRenderer extends JLabel implements TableCellRenderer{
CellColorRenderer(){
setOpaque(true);
setHorizontalAlignment(LEFT);
setVerticalAlignment(CENTER);
setBackground(Color.white);
setForeground(Color.black);
}
protected void setValue(Object value){
setText((value == null) ? "" : value.toString());
}
public java.awt.Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
setForeground(Color.red);
setValue(value);
return this;
}
}
EDIT:: Sorry, jag ska inte ta credit för koden den kommer från: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
Finns fö mycket annat roligt man kan använda där :-)
Lycka till!
tjena, peter