Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JFrame的Java锁纵横比_Java_User Interface_Swing_Jframe - Fatal编程技术网

JFrame的Java锁纵横比

JFrame的Java锁纵横比,java,user-interface,swing,jframe,Java,User Interface,Swing,Jframe,可以在JavaSwing中锁定JFrame的纵横比吗 例如,如果我的窗口是200px乘以200px,并且用户希望调整它的大小,我希望宽度和高度之间的比率为1:1,这样,如果新宽度为400px,则新高度将强制为400px 我知道ComponentListener和componentresistized,但我很难让它进入一个无限的调整大小循环,因为我在调整大小侦听器中调整窗口的大小 谢谢 我对你的问题没有具体的答案,但我经常发现,避免你所说的“无限循环调整大小”的方法是推迟你调整窗口大小的电话: b

可以在JavaSwing中锁定JFrame的纵横比吗

例如,如果我的窗口是200px乘以200px,并且用户希望调整它的大小,我希望宽度和高度之间的比率为1:1,这样,如果新宽度为400px,则新高度将强制为400px

我知道
ComponentListener
componentresistized
,但我很难让它进入一个无限的调整大小循环,因为我在调整大小侦听器中调整窗口的大小


谢谢

我对你的问题没有具体的答案,但我经常发现,避免你所说的“无限循环调整大小”的方法是推迟你调整窗口大小的电话:

boolean correctAspectRatio = ...; // check to see if new size meets aspect ratio requirements

if (!correctAspectRatio) {
  final Frame _frame = this;
  final int _width = ...; // calculated width
  final int _height = ...; // calculated height

  SwingUtilities.invokeLater(new Runnable(){
    public void run() {
      _frame.setSize(_width, _height);
    }
  });
}

即使我这样做了,它仍然会进入一个调整大小的循环,只是没有那么明显。试着做_width+20,_height+20,你就会明白我的意思。我假设如果大小满足纵横比,你不会调用resize,对吗?看我编辑过的答案啊,效果很好。我想在用户调整大小时确实没有什么方法可以做到这一点,但这种方法很好。谢谢