调整JPanel的大小以适应新的JLabel图标

时间:2012-12-18 11:27:36

标签: java swing autoresize

我正在尝试通过反复更改JLabel上的图标来创建动画(旋转文本)。问题是图像的大小不同,当它们大于第一张图像的大小时,它们会被剪裁。

解决这个问题的另一种方法是为JLabel设置setPreferredSize,以便所有图片都适合 - 但我想必须有一种方法可以动态地调整包含JPanel的{​​{1}}的大小?

在下面的代码中,我也尝试删除所有JLabel,创建一个新的,然后添加新的,但效果相同。

JLabel

整个面板将用于小程序。

这是截图:http://screencast.com/t/UmqQFZHJVy

应该是帧的图像应该位于/ images /子目录中,如果用户输入 n 表示帧数,F表示图像 前缀,然后文件是F1,F2等,到Fn(GIF)。声音文件应位于/ audio /子目录中,整个文件名由用户提供。

2 个答案:

答案 0 :(得分:3)

您可以尝试为每张图片创建JLabels列表,将其添加到CardLayout的面板并交换卡片。

答案 1 :(得分:3)

好的JLabel应自动调整其给定内容的大小,因此要解决JPanel问题,只需覆盖getPreferredSize() JPanelJLabelDimension根据{{​​1}}大小。

JLabel

也不要忘记在public class MyPanel extends JPanel { JLabel label=...; @Override public Dimension getPreferredSize() { return new Dimension(label.getWidth(),label.getHeight()); } } 实例上更改JLabel来电revalidate()repaint()的图标,以便重新选择尺寸更改。