缩放JFrame内容

时间:2013-06-12 20:05:16

标签: java image swing jframe

我有一个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变得越来越大。)现在我的问题是:无论我如何缩放图像,我能做什么才能使图像始终充满框架?

2 个答案:

答案 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)。