我正在尝试创建一个包含缩略图列表及其文件名的面板。该列表还需要通过随文件附加的各种元数据进行排序。缩略图宽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)如何集成可排序列表以将缩略图及其元数据添加到?
谢谢!
答案 0 :(得分:1)
您对drawImage()
的调用可以具有缩放图像的宽度和高度。您可以按排序顺序将每个thumbnail
添加到JList
。 JList
可让您更改图片的包装方式。将元数据放在每个thumbnail
的工具提示中。
编辑:
JList
可以支持分页吗?
是的,将列表添加到JScrollPane
。
可以动态更新吗?
是;您可能希望通过覆盖ListModel
的添加/插入方法来对DefaultListModel
进行排序。