Hier mal ein Quick’n-Dirty Beispiel wie du mit einem cell-renderer
package de.jfruit;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.util.List;
public class SampleRenderer {
public static void main(String[] args) {
final JFrame frame = new JFrame("Sample Renderer");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JList list = new JList();
DefaultListModel model = new DefaultListModel();
model.addElement(Arrays.asList("Karl", "heiner", "abc"));
model.addElement(Arrays.asList("def", "k"));
list.setCellRenderer(new MyListRenderer());
list.setModel(model);
frame.add(list);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setLocationRelativeTo(null);
frame.setSize(600, 300);
frame.setVisible(true);
}
});
}
}
class MyListRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if(!(value instanceof List)) return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
List liste = (List) value;
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,2));
for(int i = 0; i < liste.size(); i++) {
panel.add(new JLabel("Eintrag: " + i));
panel.add(new JLabel(liste.get(i).toString()));
}
if(index % 2 == 0) {
panel.setBackground(Color.CYAN);
}
return panel;
}
}