Java 如何保持JFrame的纵横比
我正在创建一个应用程序,我相信如果它在扩展/最小化时能够保持其纵横比会更好。我将最小大小设置为1000x800,并希望它保持5:4的比例 是否已经有了这样的方法,或者我需要自己添加一个事件处理程序来检查帧是否已调整大小,它将提供尽可能接近的大小 如果问题重复,对不起,我找不到 编辑 谢谢所有帮助我完成这件事的人。下面是我如何保持我的应用程序的大小,以满足它正在使用的屏幕大小,而不会变得太大或太小,并保持纵横比。 干杯 试试这个:Java 如何保持JFrame的纵横比,java,swing,jframe,Java,Swing,Jframe,我正在创建一个应用程序,我相信如果它在扩展/最小化时能够保持其纵横比会更好。我将最小大小设置为1000x800,并希望它保持5:4的比例 是否已经有了这样的方法,或者我需要自己添加一个事件处理程序来检查帧是否已调整大小,它将提供尽可能接近的大小 如果问题重复,对不起,我找不到 编辑 谢谢所有帮助我完成这件事的人。下面是我如何保持我的应用程序的大小,以满足它正在使用的屏幕大小,而不会变得太大或太小,并保持纵横比。 干杯 试试这个: @Override public void componentRe
@Override
public void componentResized(ComponentEvent arg0) {
int W = 4;
int H = 3;
Rectangle b = arg0.getComponent().getBounds();
arg0.getComponent().setBounds(b.x, b.y, b.width, b.width*H/W);
}
请在此处查看可调整大小的
这是通过从0,0到宽度、高度的距离,然后根据给定的纵横比(使用正弦和余弦)重新分配到x和y来实现的。坦率地说,保持内容的纵横比更容易、更简单,消除了系统最大化窗口时可能出现的任何奇怪现象:P@MadProgrammer但如果我这样做,框架内的内容看起来会很奇怪,而且我不确定这是否可能,因为除了框架之外,我所有组件的大小都是由布局管理器设置的SO?首先设计一个布局管理器,重点是保持单个容器的比例,然后将其余组件添加到该容器中container@MadProgrammer,当然,:D在内容窗格中,是包含所有内容的窗格。干杯:)@MadProgrammer我已经编辑了我的问题,以显示我对纵横比的最终解决方案,你认为如何?在哪个类中被重写
JFrame
(及其父类)不实现此方法FormComponentResistized(java.awt.event.ComponentEvent evt){}我们可以假设他们没有使用某种表单编辑器吗?请对代码和代码片段、HTML/XML或输入/输出等结构化文档使用代码格式。为此,选择文本并单击消息发布/编辑表单顶部的{}
按钮。addComponentListener(new ComponentAdapter(){…})代码>
@Override
public void componentResized(ComponentEvent arg0) {
int W = 4;
int H = 3;
Rectangle b = arg0.getComponent().getBounds();
arg0.getComponent().setBounds(b.x, b.y, b.width, b.width*H/W);
}