>Java >JFrame은 크기를 조정할 때 동일한 창 종횡비를 유지합니다.

JFrame은 크기를 조정할 때 동일한 창 종횡비를 유지합니다.

PHPz
PHPz앞으로
2024-02-22 12:55:061189검색

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

Solution

내 생각은 다음과 같습니다.

으아악

이렇게 하면 사용자가 조정하는 값이 변경되지 않습니다. (프레임 크기) 변경 사항에 응답하고 패널이 여전히 올바른 크기인지 확인합니다.

위 내용은 JFrame은 크기를 조정할 때 동일한 창 종횡비를 유지합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제