我使用Swing
和layeredPanes
制作了一个GUI,指定了大约60个项目的尺寸和(x,y)坐标。我设置的JFrame
尺寸是(1080,720),但我现在需要重新调整整个尺寸以适合(800,600)。
是否有一种快速的方法来调整整个屏幕的大小,使所有的图像和文本保持其位置和相对大小,而不需要通过每个组件并重新指定其setBounds(x, y, width, height)
?
你可以添加一个ComponentListener到你的JLayeredPane,然后在
void componentResized(ComponentEvent e)
你可以根据当前的高度和宽度重新调整一切,以保持一个特定的比例。你可以做一些简单的计算,比如得到720和当前宽度之间的差比,然后将每个组件的宽度调整为它们的实际宽度乘以这个比值。
然后对高度执行相同的操作。这样所有的东西都会保持长宽比。
我还会将每个组件存储在List中,以便更容易地访问它们。
编辑:我刚刚重读了你的问题:
而不需要遍历每个组件并重新指定
我在回答的时候忘记了这一点,我不认为有一种简单的方法可以做到这一点,而不把它们都看一遍。但是有一些简单的方法可以循环遍历它们!