Hoi! Stehe wieder mal an einem Stoppschild im Programmieren... und bräuchte mal Hilfe :shinner:
Also, Ziel vom Programm soll es sein, eine JList zu erstellen, die Daten aus einem Vektor erhält. Danach will ich bestimmte Zeilen von der JList farbig ausgeben können
... also als abstraktes Beispiel: zuerst mache ich eine Liste und befülle sie mit dem Vektor:
JList liste = new JList();
Vector listenvector = new Vector();
String li="bla0";
try
{
for(int j=0;j<10;j++)
{
listenvektor.add(li); // fügt den String zum Vektor dazu
li = li+"blaX"; // verlängere den String jede Iteration
}
liste.setListData(listenvektor); // fülle Liste mit dem Vektor
}
catch(Exception t)
{
t.printStackTrace();
}
// Teste die Liste
for(int i=0;i<listenvektor.size();i++)
{
System.out.println(listenvektor.get(i).toString());
}
// Ausgabe wäre:
// bla0
// bla0blaX
// bla0blaXblaX
// bla0blaXblaXblaX
// ... usw.
Alles anzeigen
Funktioniert auch so in der Art; jetzt will ich eine Funktion einbauen, die mir ein paar Zeilen *farbig* ausgibt,
dazu habe ich gelesen, müsste man einen eigenen CellRenderer verwenden. Dabei will ich diejenigen Zeilen
als Zahl übergeben, die farbig dargestellt werden sollen, also dann mal los:
class OrangeRenderer extends DefaultListCellRenderer
{
int indexzahl;
public OrangeRenderer(int u_index)
{
indexzahl = u_index;
}
public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean cellHasFocus)
{
JLabel label = (JLabel) super.getListCellRendererComponent(list, value,index, isSelected, cellHasFocus);
if(index == indexzahl)
{
label.setForeground(Color.ORANGE);
}
return label;
}
}
Alles anzeigen
Und dann mache ich eine Schleife, und übergebe der CellRenderer Funktion den index "i" - also die Zeilen, die er farbig ausgeben soll:
for(int i=0;i<listenvektor.size();i++)
{
dateiliste2.setCellRenderer(new OrangeRenderer(i)); // weise an der Stelle i die den CellRenderer zu
}
liste.setListData(listenvektor);
Wie auch immer, funktioniert das überhaupt nicht wie ich mir vorgestellt habe; er färbt zwar eine Zeile Orange, aber immer nur die letzte Zeile, dabei müsste er doch alle Zeilen orange färben.
... irgendwie scheint man nur 1 einziges mal der Liste den CellRenderer zuweisen zu können; gibt es nicht eine Methode, wie man die Zeile vom Vektor einen Wert zuweisen könnte, also eine Farbe und am Schluss soll er genau die Zeilen so färben, die man durch "i" bestimmt hat :confused: