ホームページ >Java >&#&チュートリアル >JLabel 内の画像のサイズを自動的に変更するにはどうすればよいですか?

JLabel 内の画像のサイズを自動的に変更するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 16:12:15965ブラウズ

How to Automatically Resize Images within a JLabel?

JLabel での画像の自動サイズ変更

JLabel を使用して JPanel に画像を表示する場合、画像のサイズを自動的に調整することが望まれることがよくあります。ラベルの寸法に合わせて調整します。デフォルトでは、JLabel は元の画像のアスペクト比を維持し、ラベルの使用可能なスペースに収まるように拡大縮小します。

画像の自動サイズ変更を実現するには、JPanel を拡張し、拡大縮小された画像を処理するカスタム コンポーネントを利用する方法があります。画像のレンダリング。これにより、画像をラベル内に合わせるか塗りつぶすかを指定するなど、スケーリング動作をより詳細に制御できるようになります。

サイズ変更オプション

主なサイズ変更オプションは 2 つあります。 JLabel の画像で利用可能:

  • Fit:画像は、元のアスペクト比を維持しながら、ラベルの境界内に収まるように拡大縮小されます。
  • Fill: 画像はラベル全体を満たすように拡大され、アスペクト比が歪む可能性があります。

サイズ変更可能なカスタムコンポーネント画像

次のコードは、fit/fill オプションに基づいて画像のスケーリングを管理するカスタム コンポーネント ScalablePane を示しています。

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)

}

使用例

ScalablePane コンポーネントを使用するには、コンポーネントをインスタンス化し、必要な値を設定します。画像:

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

以上がJLabel 内の画像のサイズを自動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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