Java JList sets the color of elements

Could you please help me how to change the color of the elements shown in JList?

I am making a JList user where I can see online users and offline users, and I need users offline to have different colors than online users.

My code to create users

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]; } }); 
+6
source share
2 answers
+5
source

I hope this code fully helps you

  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; } } 

}

+4
source

Source: https://habr.com/ru/post/913738/


All Articles