1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JList Zeilenfarben :/

  • owaye
  • 17. Februar 2008 um 22:27
  • Unerledigt
  • owaye
    6
    owaye
    Mitglied
    Reaktionen
    3
    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
    6
    owaye
    Mitglied
    Reaktionen
    3
    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 :winking_face:

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung