JTable aus mehreren Vectoren mit unterschiedlichen Farben

tekilla209

Mitglied
Hi Leutz,

ich möchte eine JTable aus zwei verschiedenen Vectoren erzeugen. Jetzt könnte ich natürlich einfach beide Vectoren zu einem verschmelzen und dann die JTable erstellen. Ich will aber für die einträge aus dem zweiten Vector eine andere Schriftfarbe haben als für die aus dem ersten.
Wie kann ich das lösen?
Habe bisher nicht hinbekommen die Schriftfarben für einzelne Zeilen zu ändern.

Danke schonmal für eure Hilfe!
 
Dazu benötigst du einen eigenen CellRenderer. Dieser gibt dir dann eine Component zurück, die du selber definieren kannst.
 
DANKE!
für alle dies interessiert, hab das jezt folgender maßen gelöst:
1. hab ne Klasse ColoredString geschrieben, mit der ich meinen Vector fülle.
2. hab meinen eigenen CellRenderer geschrieben, wie mki_germo mir geraten hat.

hier der CellRenderer:
Code:
import java.awt.*;
import javax.swing.*;

class MyCellRenderer extends JLabel implements ListCellRenderer 
{
    public MyCellRenderer() 
    {
        setOpaque(true);
    }
    
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        setText(value.toString());
        setBackground(isSelected ? new Color(128,128,200) : new Color(255,255,255));
        setForeground(((ColoredString)value).getColor());
        return this;
    }
}

und hier der bunte String:

Code:
import java.awt.Color;

public class ColoredString
{
	private String string;
	private Color color;
	public ColoredString(String string, Color color)
	{
		this.string = string;
		this.color = color;
	}
	public void setColor(Color color)
	{
		this.color = color;
	}
	public Color getColor()
	{
		return color;
	}
	public void setText(String text)
	{
		this.string = text;
	}
	public String getText()
	{
		return string;
	}
	public String toString()
	{
		return string;
	}
}

ist es das was Du gemeint hast mki_germo?
oder gibt es eine elegantere, bessere, schönere Variante?
hab in Softwaretechnik/-architektur leider nie besonders aufgepasst, programmier einfach drauf los.
 
Zurück