2012-04-20 14 views
6

क्या आप कृपया मेरी मदद कर सकते हैं, जेएलिस्ट में दिखाए गए आइटमों का रंग कैसे बदलें?जावा जेएलिस्ट आइटम का रंग

मैं एक उपयोगकर्ता जेएलिस्ट बना रहा हूं जहां मैं ऑनलाइन और ऑफ़लाइन उपयोगकर्ताओं को देख सकता हूं, और मुझे ऑफ़लाइन उपयोगकर्ताओं को ऑनलाइन उपयोगकर्ताओं की तुलना में अलग-अलग रंग रखने की आवश्यकता है।

बनाने उपयोगकर्ताओं

final String [] strings=database.getUsers(myLogin); 

jList1.setModel(new javax.swing.AbstractListModel() { 
    @Override 
    public int getSize() { return strings.length; } 
    @Override 
    public Object getElementAt(int i) { return strings[i]; } 
}); 

उत्तर

5
  • मुझे लगता है कि आप ट्यूटोरियल How to Use Lists, विशेष रूप से भाग Writing a Custom Cell Renderer पढ़ने के लिए होती हैं, के मेरे कोड, प्रतिपादक की अवधारणा JList, JTable के लिए या JComboBox भी

  • लिए एक ही है
  • उदाहरण here और on this forum here

+0

आपको बहुत बहुत धन्यवाद :) –

+0

आपकी मदद करने में खुशी, कृपया क्या 'Bušfy' – mKorbel

+0

Bušfy मेरी उपनाम है :) –

4

मुझे आशा है कि इस कोड को पूरी तरह से आप

import java.awt.BorderLayout; 
    import java.awt.Color; 
    import java.awt.Component; 
    import java.awt.EventQueue; 
    import java.util.Vector; 

    import javax.swing.DefaultListCellRenderer; 
    import javax.swing.JFrame; 
    import javax.swing.JList; 
    import javax.swing.JScrollPane; 

    public class UserList { 

public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFrame f = new JFrame("Users"); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.setSize(300, 300); 

       JList list = new JList(new Vector<User>() { 
        { 
          add(new User("A", false)); 
          add(new User("B", true)); 
          add(new User("C", true)); 
          add(new User("D", false)); 
        } 
       }); 

       list.setCellRenderer(new DefaultListCellRenderer() { 

        @Override 
        public Component getListCellRendererComponent(JList list, Object value, int index, 
           boolean isSelected, boolean cellHasFocus) { 
          Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
          if (value instanceof User) { 
           User nextUser = (User) value; 
           setText(nextUser.name); 
           if (nextUser.loggedIn) { 
            setBackground(Color.GREEN); 
           } else { 
            setBackground(Color.RED); 
           } 
           if (isSelected) { 
            setBackground(getBackground().darker()); 
           } 
          } else { 
           setText("whodat?"); 
          } 
          return c; 
        } 

       }); 
       f.add(new JScrollPane(list), BorderLayout.CENTER); 
       f.setVisible(true); 
      } 
     }); 
} 

static class User { 
     String name = "NN"; 
     boolean loggedIn = false; 

     public User(String name, boolean loggedIn) { 
      this.name = name; 
      this.loggedIn = loggedIn; 
     } 
} 

में मदद मिलेगी}

संबंधित मुद्दे