展开全部
JList模型
=========
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
/**
* @e69da5e6ba9062616964757a686964616f31333262343036author Hardneedl
*/
class ImageListModel implements ListModel {
private java.util.List L = new ArrayList(0);
ImageListModel() {
L.addAll(
Arrays.asList(new File(".").listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".png");
}
})));
}
public int getSize() {return L.size();}
public Object getElementAt(int index) {return L.get(index);}
public void addListDataListener(ListDataListener l) {}
public void removeListDataListener(ListDataListener l) {}
}
图形界面
======================
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
/**
* @author Hardneedl
*/
final class IconRenderer extends JFrame {
public String getTitle() {return "ImageIcon Renderer";}
static private final Dimension size = new Dimension(160, 170);
public Dimension getPreferredSize() {return size;}
public Dimension getMaximumSize() {return size;}
public Dimension getMinimumSize() {return size;}
public Dimension getSize() {return size;}
private JList jlist;
IconRenderer() throws HeadlessException {
init();
attachListeners();
doLay();
}
private void init() {
jlist = new JList(new ImageListModel());
jlist.setCellRenderer(new DefaultListCellRenderer(){
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 File) {
try {
ImageIcon image = new ImageIcon( ((File)value).toURI().toURL() );
setIcon(image);
setText(((File)value).getName() );
setVerticalTextPosition(SwingConstants.BOTTOM );
setHorizontalTextPosition(SwingConstants.CENTER );
} catch(MalformedURLException e) {
e.printStackTrace();
}
}
else {
setText("???");
}
return c;
}
});
}
private void attachListeners() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void doLay() {
Container container = getContentPane();
container.add(new JScrollPane(jlist));
pack();
setVisible(true);
}
public static void main(String[] args) {new IconRenderer();}
}