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