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

Comment redimensionner automatiquement les images dans un JLabel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 16:12:15965parcourir

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)

}

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);

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