如何在java中创建缩略图的分页列表/目录?

时间:2012-05-24 19:20:13

标签: java image swing pagination thumbnails

我正在尝试创建一个包含缩略图列表及其文件名的面板。该列表还需要通过随文件附加的各种元数据进行排序。缩略图宽120像素,高90像素。到目前为止,我有:

public void PhotoCatalog extends JPanel {
    private transient SortedList<PhotoMetadata> sortedThumbList;

    public void PhotoCatalog() {
        setLayout(new GridLayout(sortedThumbList % 3, 3));
        Iterator<PhotoMetadata> iterator = sortedThumbList.iterator();
        while (iterator.hasNext()) {
            Thumbnail thumbnail = new Thumbnail(iterator.next());
            JPanel panel = new JPanel(new BorderLayout());
            panel.add(thumbnail, BorderLayout.NORTH);
            panel.add(new JLabel(iterator.next().getFilename(), BorderLayout.SOUTH);
            this.add(panel);
        }
    }

    public class Thumbnail extends JPanel {
        BufferedImage thumbnail = null;

        public void Thumbnail(PhotoMetadata data) {
            try {
                thumbnail = ImageIO.read(new File(data.getFilename()));
            }
            catch (IOException e) {}
        }
        @Override
        public void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.drawImage(thumbnail, 0, 0, null);
    }
}

我需要整合实际列表才能进行排序和分页,但是我很困惑从哪里开始以及使用哪个列表。到目前为止我的代码显示的黑色图像尺寸不合适。

1)如何以正确的尺寸显示目录中的图像? 2)如何集成可排序列表以将缩略图及其元数据添加到?

谢谢!

1 个答案:

答案 0 :(得分:1)

您对drawImage()的调用可以具有缩放图像的宽度和高度。您可以按排序顺序将每个thumbnail添加到JListJList可让您更改图片的包装方式。将元数据放在每个thumbnail的工具提示中。

编辑:

  

JList可以支持分页吗?

是的,将列表添加到JScrollPane

  

可以动态更新吗?

是;您可能希望通过覆盖ListModel的添加/插入方法来对DefaultListModel进行排序。