ホームページ > Java > JFrame はサイズ変更時に同じウィンドウ アスペクト比を維持します

JFrame はサイズ変更時に同じウィンドウ アスペクト比を維持します

PHPz
リリース: 2024-02-22 12:55:06
転載
1215 人が閲覧しました

php エディタ Zimo がこの問題の Java Q&A を提供します。JFrame のサイズを変更するときに同じウィンドウのアスペクト比を維持する方法について説明します。 JFrame は Java で一般的に使用されるウィンドウ コンポーネントですが、サイズ変更時にアスペクト比を維持することは開発者にとって常に懸念事項でした。この記事では、このジレンマを解決するための実践的な方法とヒントをいくつか紹介します。飛び込んでみましょう!

質問内容

Linux gnomeを勉強しています。

ウィンドウの比率を 16:9 に維持したいと考えています。たとえば、幅を拡大縮小する場合、コードは高さのみを変更するため、ユーザー入力には影響しません。

このアプローチでは、ウィンドウのサイズが本来のサイズを超えて変更されます。 たとえば、幅をわずかに拡大縮小しましたが、高さは本来よりもはるかに大きくなっています。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main
{
    public static void main(String[] args)
    {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(1280, 720));
        panel.setBackground(new Color(89, 108, 171, 255));

        JFrame frame = new JFrame("Test");
        frame.setLocation(100, 100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);

        panel.addComponentListener(new ComponentAdapter()
        {
            @Override
            public void componentResized(ComponentEvent e)
            {
                int targetWidth = frame.getSize().width;
                int targetHeight = frame.getSize().width * 9 / 16;

                if (targetHeight > frame.getSize().height)
                {
                    targetHeight = frame.getSize().height;
                    targetWidth = frame.getSize().height * 16 / 9;
                }

                frame.setSize(targetWidth, targetHeight);
            }
        }); 
    }
}
ログイン後にコピー

解決策

これは私のアイデアです。

リーリー

この方法では、ユーザーが調整している値は変更されません。 (フレームのサイズ) 変更に対応し、パネルが依然として正しいサイズであることを確認しています。

以上がJFrame はサイズ変更時に同じウィンドウ アスペクト比を維持しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート