3

我需要在 JPanel 中显示一个图像(它本身被放置在几层 JPanel 中),并且我想调整图像的大小以适合 JPanel 的宽度。现在,当我将图像添加到 JPanel 时,JPanel 的 getWidth() 等于屏幕宽度,因此图像被调整为屏幕宽度。但是在将 Jpanel 添加到其父 JPanel 之后,宽度发生了变化,因此图像对于 JPanel 的宽度来说太大了。

我想仅在 JPanel 布局后调整大小并添加图像,因此我获得了面板的正确宽度并可以相应地调整图像大小。

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

4

2 回答 2

2

是的,您可以使用ComponentListener来做到这一点。LayoutManager 应该在布局组件时调用 setSize 方法,因此您应该能够收到此类修改的通知。

您正在寻找的方法是:

void componentResized(ComponentEvent e){}

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

JPanel panel;
...
panel.addComponentListener(new YourClassImplementingComponentListener());
于 2012-08-15T10:49:19.417 回答
-1

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

于 2012-08-15T12:00:34.563 回答