1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JList Zeilenfarben :/

  • owaye
  • 17. Februar 2008 um 22:27
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • owaye
    Punkte
    313
    Beiträge
    46
    • 17. Februar 2008 um 22:27
    • #1

    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:

    Code
    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:

    Code
    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:

    Code
    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:

  • owaye
    Punkte
    313
    Beiträge
    46
    • 18. Februar 2008 um 13:54
    • #2

    oke, ich glaub ich hab selber eine Lösung gefunden... man muss offenbar ein ListModel verwenden, dann kann man die Farbe immer updaten ;)

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum