如何在布局后将内容添加到JPanel

时间:2012-08-15 10:35:50

标签: java swing layout jpanel

我需要在JPanel中显示一个图像(它本身放在几层JPanel中),我想调整图像的大小以适应JPanel的宽度。现在,当我将图像添加到JPanel时,JPanel的getWidth()等于屏幕宽度,因此图像的大小调整为屏幕宽度。但是在将Jpanel添加到其父JPanel之后,宽度已经改变,因此对于JPanel的宽度,图像会变大。

我想在JPanel布局后调整大小并添加图像,这样我就可以获得适当的面板宽度,并可以相应地调整图像大小。

我怎样才能做到这一点?是否有像afterLayout()这样的事件?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用ComponentListener来执行此操作。 LayoutManager应该在布局组件时调用setSize方法,因此您应该能够收到有关此类修改的通知。

您正在寻找的方法是:

void componentResized(ComponentEvent e){}

因此,实现ComponentListener接口,并通过addComponentListener()方法将其添加到所需的Component:

JPanel panel;
...
panel.addComponentListener(new YourClassImplementingComponentListener());

答案 1 :(得分:-1)

使用ComponentListener并听取ComponentResized方法。在那里写你的逻辑来根据面板的大小调整图像大小。当面板调整大小时,图像也会相应调整大小。