我需要在JPanel中显示一个图像(它本身放在几层JPanel中),我想调整图像的大小以适应JPanel的宽度。现在,当我将图像添加到JPanel时,JPanel的getWidth()等于屏幕宽度,因此图像的大小调整为屏幕宽度。但是在将Jpanel添加到其父JPanel之后,宽度已经改变,因此对于JPanel的宽度,图像会变大。
我想在JPanel布局后调整大小并添加图像,这样我就可以获得适当的面板宽度,并可以相应地调整图像大小。
我怎样才能做到这一点?是否有像afterLayout()这样的事件?
答案 0 :(得分:2)
是的,您可以使用ComponentListener来执行此操作。 LayoutManager应该在布局组件时调用setSize方法,因此您应该能够收到有关此类修改的通知。
您正在寻找的方法是:
void componentResized(ComponentEvent e){}
因此,实现ComponentListener接口,并通过addComponentListener()方法将其添加到所需的Component:
JPanel panel;
...
panel.addComponentListener(new YourClassImplementingComponentListener());
答案 1 :(得分:-1)
使用ComponentListener
并听取ComponentResized
方法。在那里写你的逻辑来根据面板的大小调整图像大小。当面板调整大小时,图像也会相应调整大小。