1

サムネイルとそのファイル名のページ分割されたリストを含むパネルを作成しようとしています。また、リストは、ファイルに添付されたさまざまなメタデータによって並べ替えることができる必要があります。サムネイルは幅 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) 並べ替え可能なリストを統合して、サムネイルとそのメタデータを追加するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

の呼び出しにdrawImage()は、画像を拡大縮小する幅と高さを設定できます。thumbnailそれぞれをJListソートされた順序で追加できます。AJListを使用すると、写真の折り返し方法を変更できます。それぞれのツールチップにメタデータを配置しthumbnailます。

編集:

JListページングをサポートできますか?

はい、リストをに追加しますJScrollPane

そして、それは動的に更新できますか?

はい; ListModelのadd/insertメソッドをオーバーライドして、ソートを維持することをお勧めしますDefaultListModel

于 2012-05-25T12:15:20.133 に答える