[英]Java JList setting color of items
你能幫幫我,如何改變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]; }
});
我希望這段代碼能夠完全幫助你
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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.