【问题标题】:Java JList setting color of itemsJava JList设置项目的颜色
【发布时间】:2012-05-02 07:53:52
【问题描述】:

您能帮我吗,如何更改 JList 中显示的项目的颜色?

我正在制作一个用户JList,我可以在其中看到在线和离线用户,并且我需要离线用户具有与在线用户不同的颜色。

我的用户创建代码

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

【问题讨论】:

    标签: java swing jlist listcellrenderer


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      希望这段代码对你有帮助

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

      }

      【讨论】:

        猜你喜欢
        • 2017-04-27
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        • 2014-12-04
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        • 2014-09-11
        相关资源
        最近更新 更多