Rumah > Java > javaTutorial > Bagaimana untuk Mengintegrasikan Imej Kecil Imej Boleh Tatal ke dalam Grid SpringLayout?

Bagaimana untuk Mengintegrasikan Imej Kecil Imej Boleh Tatal ke dalam Grid SpringLayout?

Patricia Arquette
Lepaskan: 2024-12-01 13:28:17
asal
310 orang telah melayarinya

How to Integrate Scrollable Image Thumbnails into a SpringLayout Grid?

Menambahkan Imej Kecil Imej pada Reka Letak dalam Grid

Cabaran:

Menyepadukan senarai lakaran kenit imej ke dalam sistem grid dalam bingkai SpringLayout yang menampung menatal.

Penyelesaian:

Untuk memaparkan grid lakaran kenit dalam SpringLayout, anda perlu melaksanakan bekas tersuai. Berikut ialah respons yang dipertingkatkan:

Respons yang Dipertingkat:

Anda boleh mencipta bekas tersuai untuk memaparkan grid lakaran kecil dalam SpringLayout. Berikut ialah penyelesaian yang dipertingkatkan:

  1. Buat Panel Tersuai:

    • Buat subkelas JPanel tersuai yang dipanggil ImageGridPanel.
    • Laksanakan preferredLayoutSize() untuk mengira saiz pilihan panel berdasarkan bilangan dan saiz lakaran kenit.
    • Timpa paintComponent() untuk melukis lakaran kenit dalam corak grid.
  2. Tambah Panel Tersuai:

    • Tambahkan contoh ImageGridPanel pada JPanel bingkai.
    • Gunakan kekangan SpringLayout untuk meletakkan dan saiz ImageGridPanel.
  3. Tambah Thumbnail:

    • Buat komponen ImagePane untuk mewakili setiap lakaran kecil imej.
    • Tambahkan komponen ImagePane pada ImageGridPanel.

Snippet Kod:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ImageGrid {

    public static void main(String[] args) {
        // Create the frame and panel.
        JFrame frame = new JFrame("Image Grid");
        JPanel panel = new JPanel();
        frame.add(panel, BorderLayout.CENTER);

        // Create the custom image grid panel.
        ImageGridPanel imageGridPanel = new ImageGridPanel();
        panel.add(imageGridPanel, BorderLayout.CENTER);

        // Add thumbnails to the image grid panel.
        for (int i = 0; i < 10; i++) {
            imageGridPanel.addImage(new ImageIcon("image" + i + ".png"));
        }

        // Set the frame properties.
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    static class ImageGridPanel extends JPanel {

        private List<ImageIcon> images;

        public ImageGridPanel() {
            setBackground(Color.WHITE);
            setLayout(null);
            images = new ArrayList<>();
        }

        public void addImage(ImageIcon image) {
            images.add(image);
            invalidate();
            repaint();
        }

        @Override
        public Dimension getPreferredSize() {
            int numImages = images.size();
            int numRows = (int) Math.ceil(Math.sqrt(numImages));
            int numCols = (int) Math.ceil(numImages / numRows);
            int width = numCols * 100;
            int height = numRows * 100;
            return new Dimension(width, height);
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            int numImages = images.size();
            int numRows = (int) Math.ceil(Math.sqrt(numImages));
            int numCols = (int) Math.ceil(numImages / numRows);
            int width = getWidth() / numCols;
            int height = getHeight() / numRows;
            for (int i = 0; i < numImages; i++) {
                ImageIcon image = images.get(i);
                int row = i / numCols;
                int col = i % numCols;
                g.drawImage(image.getImage(), col * width, row * height, null);
            }
        }
    }
}
Salin selepas log masuk

Tambahan Pertimbangan:

  • Pertimbangkan menggunakan SpringLayout untuk meletakkan lebih jauh dan menjajarkan lakaran kecil dalam grid.
  • Untuk meningkatkan kecekapan, muatkan dan skala imej dalam urutan yang berasingan.
  • Sediakan kefungsian tatal dengan menambahkan ImageGridPanel pada a JScrollPane.

Atas ialah kandungan terperinci Bagaimana untuk Mengintegrasikan Imej Kecil Imej Boleh Tatal ke dalam Grid SpringLayout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan