Rumah >Java >javaTutorial >Bagaimana untuk Mengubah Saiz Imej Secara Automatik dalam JLabel?

Bagaimana untuk Mengubah Saiz Imej Secara Automatik dalam JLabel?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-02 16:12:15965semak imbas

How to Automatically Resize Images within a JLabel?

Saiz Semula Imej Automatik pada JLabel

Apabila memaparkan imej pada JPanel menggunakan JLabel, ia selalunya dikehendaki melaraskan saiz imej secara automatik agar sesuai dengan dimensi label. Secara lalai, JLabel akan mengekalkan nisbah bidang imej asal dan menskalakannya agar muat dalam ruang label yang tersedia.

Untuk mencapai saiz semula imej automatik, satu pendekatan ialah menggunakan komponen tersuai yang memanjangkan JPanel dan mengendalikan skala rendering imej. Ini membolehkan lebih kawalan ke atas gelagat penskalaan, seperti menentukan sama ada untuk memuatkan atau mengisi imej dalam label.

Pilihan Mengubah Saiz

Terdapat dua pilihan mengubah saiz utama tersedia untuk imej pada JLabel:

  • Muat: Imej itu akan diskalakan agar muat dalam sempadan label sambil mengekalkan nisbah bidang asalnya.
  • Isi: Imej akan diregangkan untuk mengisi keseluruhan label, yang berpotensi memesongkan nisbah bidang.

Komponen Tersuai untuk Imej Boleh Resizable

Yang berikut kod mempamerkan komponen tersuai, ScalablePane, yang mengurus penskalaan imej berdasarkan pilihan muat/isi:

public class ScalablePane extends JPanel {

    // ... (code omitted for brevity)

    @Override
    protected void paintComponent(Graphics g) {
        // Draw the scaled image
        super.paintComponent(g);
        if (scaled != null) {
            g.drawImage(scaled, x, y, this);
        } else if (master != null) {
            g.drawImage(master, x, y, this);
        }
    }

    // ... (code omitted for brevity)

}

Contoh Penggunaan

Untuk menggunakan komponen ScalablePane, anda boleh instantiate dan set imej yang diingini:

ScalablePane scalablePane = new ScalablePane(image);

// Set the fit/fill option
scalablePane.setToFit(true); // Fit image within the component

// Add the component to your JPanel
yourJPanel.add(scalablePane);

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz Imej Secara Automatik dalam JLabel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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