如何在java gui中调整背景图像大小?

时间:2012-04-11 14:15:09

标签: java swing user-interface jpeg

所以我正在制作一个gui,我有一个背景图片。我不知道如何将它设置为背景,所以任何帮助都会很好。探索也会很好。此外,在我们将该图像作为背景后,我们如何将图像调整大小到窗口的大小。例如 image.setSize(frame.getHeight(), frame.getWidth()); 但我不知道这是否有效。图像名称为ABC0001.jpg,帧名称为frame。谢谢!

2 个答案:

答案 0 :(得分:3)

要调整图像大小,可以使用


public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), this); // draw the image
}

或者您可以使用componentlistener,实现方式如下:


        final Image img = ...;
        ComponentListener cl = new ComponentAdapter() {
            public void componentResized(ComponentEvent ce) {
                Component c = ce.getComponent();
                img = im1.getScaledInstance(c.getWidth(), c.getHeight(), Image.SCALE_SMOOTH); 
            }
        };

使用第二种解决方案时,图像质量会随着时间的推移而降低,因此建议您将原件和副本分开。

答案 1 :(得分:0)

创建一个扩展JPanel的类。让该类通过重写paintComponent

来加载图像
class BackgroundPanel extends JPanel
{
    Image img;
    public BackgroundPanel()
    {
        // Read the image and place it in the variable img so it can be used in paintComponent
        img = Toolkit.getDefaultToolkit().createImage("ABC0001.jpg");
    }

    public void paintComponent(Graphics g)
    {
        g.drawImage(img, 0, 0, null); // draw the image
    }
}

现在你有这个类,只需将它添加到你的JFrame(或者你想要的背景)。

//create refrence if you want to add stuff ontop of the panel
    private BackgroundPanel backGroundPanel;

//constructor
    add(backGroundPanel, BorderLayout.CENTER);

背景的大小将填满整个帧,因此除非你想要它更小,否则不需要缩放它