我有一个JLayeredPane,其中包含一个包含Image的JLabel。 这看起来像这样:
JLayeredPane panel = new JLayeredPane();
JLabel label1 = new JLabel();
label1.setIcon(new ImageIcon(image));
label1.setBounds(0, 0, 1300, 900);
panel.add(label1, 0);
frame.add(panel);
frame.setSize(1320,900);
frame.setVisible(true);
JLayeredPane中的其他一些图片。
一切都很好。但是当我在窗户中缩放框架时,图像不会缩放。 (图像保持相同的大小,窗口随着greyspace变得越来越大。)现在我的问题是:无论我如何缩放图像,我能做什么才能使图像始终充满框架?
答案 0 :(得分:1)
不确定为什么要使用JLayeredPane。
也许你可以使用Darryl的Stretch Icon课程。
答案 1 :(得分:0)
你真正需要的只是带有Image的JComponent,并覆盖paintComponent,如下所示:
public class FillImage extends JComponent {
final Image image;
public FillImage(final Image image) {
this.image = image;
}
@Override
public paintComponent(Graphics g) {
// Additionally, you may set extra hints for better scaling
// Draw image stretched to fill entire component
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
}
}
然后,确保将FillImage
组件添加到容器中,该布局使其填充所有可用空间(例如BorderLayout
中的CENTER
)。