ホームページ >Java >&#&チュートリアル >Java で JLabel に合わせて ImageIcon を自動的に拡大縮小する方法

Java で JLabel に合わせて ImageIcon を自動的に拡大縮小する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 22:23:11753ブラウズ

How to Automatically Scale an ImageIcon to Fit a JLabel in Java?

ImageIcon をラベル サイズに合わせて自動的に拡大縮小する

Java では、GUI 上に画像を表示するには、ImageIcon クラスを使用する必要があります。このクラスは、ラベルなどの GUI コンポーネント内の画像の表示を管理する便利な方法を提供します。ただし、ImageIcon のデフォルトの動作は画像の元のサイズを維持することですが、これは常に望ましいとは限りません。

カスタム スケーリング

デフォルトのスケーリング動作が適切ではない場合は、拡大縮小された画像の表示を処理するカスタム コンポーネントを作成できます。この方法により、スケーリング プロセスをより詳細に制御でき、目的のフィットまたはフィル動作を指定できるようになります。

スケーラブル イメージ コンポーネントの定義

カスタム スケーラブル イメージを作成するにはコンポーネントをJPanelクラスから継承し、次のキーを実装します。 Methods:

  • paintComponent: このメソッドをオーバーライドすると、スケールされた画像をパネルに描画できます。
  • invalidate: このメソッドは次のとおりです。コンポーネントの寸法が変更されたときに呼び出され、スケーリングされたコンポーネントの再生成がトリガーされます。 image.

実装例:

次の Java コードは、カスタムのスケーラブルな画像コンポーネントを示しています:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.swing.JPanel;

public class ScalableImage extends JPanel {

    // ...

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        if (image != null) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            int x = (getWidth() - image.getWidth(this)) / 2;
            int y = (getHeight() - image.getHeight(this)) / 2;
            g2d.drawImage(image, x, y, this);
        }
    }

    // ...
}

Fit vs Fill 動作

スケーリング動作をカスタマイズして、画像をコンポーネントの寸法内に収めたり、領域全体を埋めたりすることができます。フィット動作は、アスペクト比を維持しながら、利用可能なスペース内に収まるように画像を拡大縮小します。塗りつぶし動作は、領域全体を埋めるように画像を拡大縮小し、トリミングまたは変形する可能性があります。

動的スケーリング

コンポーネントの寸法が変更されたときに画像が適切に拡大縮小されるようにするため、revalidate() メソッドまたは setSize() メソッド内で、invalidate() メソッドを呼び出します。これにより、更新された寸法に基づいてスケーリングされた画像の再生成がトリガーされます。

以上がJava で JLabel に合わせて ImageIcon を自動的に拡大縮小する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。