Just reverse your array. In one line: (This isn't exactly efficient, but it'll work):
JList list = new JList(Collections.reverse(Arrays.asList(items)).toArray());
Note: It doesn't make sense to have a different UI component which reads the data differently. A ListModel holds the data according to the contract between itself and JList. Creating a new contract is pointless, when its trivial to reorganize the data based on how you want to visualize it, and more importantly, based on UI standards of the operating system.
If anything, you want a reverse ListModel, but, on the same note, it doesn't make sense to have a full implementation of ListModel that just goes in the opposite direction, when really, all you need to do is reverse the order of the backing data structure.
So, that's what you do.
Edit to add:
I read more of what you're trying to do and it looks like you want a fixed size list where data starts at the end (like a stack). In that case, what you really need to do is implement your own ListModel. Take a look at AbstractListModel and you should be able to extend it and provide your own data.
If you do that, your class will then be essentially (consider this p-code, this may not be 100% right):
class ReverseListModel extends AbstractListModel {
public Object getElementAt(int i) {
int dataIndex = fixedSize - i;
if(dataIndex > data.length)
return "";
else
return data[dataIndex];
}
public int getSize() {
return fixedSize;
}
}