如何保持JFrame的宽高比

时间:2017-06-12 02:34:55

标签: java swing jframe

我正在创建一个我相信如果能够在扩展\ minimal时保持其宽高比会更好的应用程序。我将最小尺寸设置为1000x800,并希望它保持5:4的比例。

是否有方法已经或者我是否需要自己添加一个事件处理程序来检查框架是否已经调整大小它是否会给它提供最接近的尺寸?

PS。如果问题重复,我很抱歉,我找不到它

修改

感谢所有帮助我完成这项工作的人。这是我如何保持我的应用程序的大小,以满足它使用的屏幕大小,而不会太大或太小,并保持纵横比。 干杯

int width = frame.getBounds().width;
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if (width > gd.getDisplayMode().getWidth())
    width = gd.getDisplayMode().getWidth();
while (width*4/5 > gd.getDisplayMode().getHeight())
    width = (int) (width - width*0.1);
frame.setBounds(frame.getBounds().x, frame.getBounds().y, width, width*4/5);

2 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:0)

在这里查看可调整大小

https://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/drag/Resizeable.java

这是通过从0,0到宽度,高度的距离,然后为给定的宽高比重新分配到x和y(使用sin和cos)