Durchstrichener Text und farbiger Hintergrund in JTable

LukeS

Erfahrenes Mitglied
Hallo Zusammen

Ich habe eine JTable, die mir meine Aufgaben (Tasks) als Text darstellt.
Nun möchte ich einige Aufgaben, je nach Status, durchstreichen und andere farbig markieren (Hintergrund).

Ich versuche das mit einem JTextPane als cell renderer für meinen Text zu machen.
Ist das der richtige Weg?

Wenn ja, wie krieg ich den Text in die JTextPane und wie formatiere ich ihn so wie ich will?

Code:
public class TaskRenderer extends JTextPane implements TableCellRenderer {

	Task task;
	public Component getTableCellRendererComponent(JTable table, Object 
                         objectTask, boolean isSelected, boolean hasFocus, int row, int column) {
		
		task = (Task)objectTask;
		       // Text richtig formatieren und darstellen. Wie geht das?
                       switch(task.getState()){
			case active: //... task.getText() => muss irgendwie dargestellt werden... 
				break;
			case crossed: ... 
				break;
		}
		return this;
	}
}

Gibts eine einfachere Lösung?

Vielen Dank!
Gruss LukeS
 
Habe das Problem gelöst:

Code:
public class TaskRenderer extends JEditorPane implements TableCellRenderer {
	Task task;
	public TaskRenderer() {
		task = null;
		setContentType("text/html");
		setOpaque(true); 
	}

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		State state = ((TaskList)table.getModel()).get(row).getState();
		String strng = (String)value;
		setBackground(Color.white);
				
		switch(state){
			case crossed: strng = "<strike>" + strng + "</strike>";
				break;
			case dismissed: setBackground(Color.pink);
				break;
			default: setBackground(Color.white);
		}
		setText(strng);
		
		if(isSelected)
			setBackground(Color.lightGray);
	
		return this;
		
	}
}

Gruss LukeS
 
Zurück