How can I make the entries in my JList appear sorted?

John Zukowski

Remember that he JList doesn't maintain the entries, its ListModel does. You would need to maintain a sorted list model. Using a TreeSet to store the entries in the model would automatically sort the entries when you add more. The following would be your ListModel implementation:

import javax.swing.*;
import java.util.*;

public class SortedListModel extends AbstractListModel {

  // Define a SortedSet
  SortedSet model;

  public SortedListModel() {
    // Create a TreeSet
    // Store it in SortedSet variable
    model = new TreeSet();

  // ListModel methods
  public int getSize() {
    // Return the model size
    return model.size();

  public Object getElementAt(int index) {
    // Return the appropriate element
    return model.toArray()[index];

  // Other methods
  public void add(Object element) {
    if (model.add(element)) {
      fireContentsChanged(this, 0, getSize());

  public void addAll(Object elements[]) {
    Collection c = Arrays.asList(elements);
    fireContentsChanged(this, 0, getSize());

  public void clear() {
    fireContentsChanged(this, 0, getSize());

  public boolean contains(Object element) {
    return model.contains(element);

  public Object firstElement() {
    // Return the appropriate element
    return model.first();

  public Iterator iterator() {
    return model.iterator();

  public Object lastElement() {
    // Return the appropriate element
    return model.last();

  public boolean removeElement(Object element) {
    boolean removed = model.remove(element);
    if (removed) {
      fireContentsChanged(this, 0, getSize());
    return removed;   

Then, to use the model, you would just need to associate it to a JList:

SortedListModel model = new SortedListModel();
// fill model
JList list = new JList(model);
0 Comments  (click to add your comment)
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



About | Sitemap | Contact
By using this site, you agree to the Privacy Policy