Maison > Java > javaDidacticiel > Comment redimensionner automatiquement les images dans un JLabel ?

Comment redimensionner automatiquement les images dans un JLabel ?

Mary-Kate Olsen
Libérer: 2024-12-02 16:12:15
original
1072 Les gens l'ont consulté

How to Automatically Resize Images within a JLabel?

Redimensionnement automatique de l'image sur un JLabel

Lors de l'affichage d'une image sur un JPanel à l'aide d'un JLabel, il est souvent souhaité d'ajuster automatiquement la taille de l'image pour s'adapter aux dimensions de l'étiquette. Par défaut, JLabel conservera les proportions de l'image d'origine et la mettra à l'échelle pour l'adapter à l'espace disponible de l'étiquette.

Pour obtenir un redimensionnement automatique de l'image, une approche consiste à utiliser un composant personnalisé qui étend JPanel et gère la mise à l'échelle. rendu des images. Cela permet plus de contrôle sur le comportement de mise à l'échelle, par exemple en spécifiant si l'image doit être ajustée ou remplie dans l'étiquette.

Options de redimensionnement

Il existe deux options de redimensionnement principales disponible pour les images sur un JLabel :

  • Ajuster : L'image sera mise à l'échelle pour s'adapter dans les limites de l'étiquette tout en conservant ses proportions d'origine.
  • Remplir : l'image sera étirée pour remplir la totalité de l'étiquette, ce qui pourrait déformer les proportions.

Composant personnalisé pour les images redimensionnables

Le code suivant présente un composant personnalisé, ScalablePane, qui gère mise à l'échelle de l'image basée sur l'option d'ajustement/remplissage :

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)

}
Copier après la connexion

Exemple d'utilisation

Pour utiliser le composant ScalablePane, vous pouvez l'instancier et définir l'image souhaitée :

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);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal